CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!
//-------------------------------------------------------------------------
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
//Add information
CATUnicodeString oCellContents;
////////////////判断是否所有的信息都填写
if(_EditorName->GetText()=="")
{
PrintMessage("请完善用户名信息!");
return;
}
if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)
{
PrintMessage("请完善性别信息!");
return;
}
if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)
{
PrintMessage("请完善科目信息!");
return;
}
if( _EditorTel->GetText().GetLengthInChar() != 11)
{
PrintMessage("请完善电话信息!");
return;
}
//////////////判断是否有相同的名字已经添加在MultList中
bool isIn = false;
for(int i=0;i<_MultiListInfor->GetLineCount();i++)
{
_MultiListInfor->GetColumnItem(0, oCellContents,i);
if(oCellContents==_EditorName->GetText())
{
PrintMessage("同名存在,请重新输入!");
isIn = true;
break;
}
}
if (isIn)
{
return;
}
else
{
///////////将收集到要添加的信息放在ColumnTitles中,
CATUnicodeString ColumnTitles;
//收集姓名信息
ColumnTitles=_EditorName->GetText();
//收集性别信息
if(_RadioButtonMale->GetState()==CATDlgCheck) //收集性别信息
ColumnTitles="男";
else if(_RadioButtonFemale->GetState()==CATDlgCheck)
ColumnTitles="女";
//获取年龄
CATUnicodeString iAgeText;
_ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
ColumnTitles =iAgeText;
//获取电话
ColumnTitles =_EditorTel->GetText();
//获取时长
char msg;
int tempInt = (int)(_SpinnerTime->GetCurrentValue());
itoa(tempInt,msg,10);
CATUnicodeString iTimeText = CATUnicodeString(msg);
ColumnTitles = iTimeText;
//收集学科信息
CATUnicodeString iText;
if (_CheckButtonCAA->GetState() == CATDlgCheck)
{
iText += _CheckButtonCAA->GetTitle();
}
if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
{
iText +=_CheckButtonNXOpen->GetTitle();
}
if (_CheckButtonTC->GetState() == CATDlgCheck)
{
iText += _CheckButtonTC->GetTitle();
}
ColumnTitles = iText;
///////////在MultiLIst中添加信息用到的函数是SetColumnItems
_MultiListInfor ->SetColumnItems(0,&ColumnTitles,1,-1,CATDlgDataAdd);
_MultiListInfor ->SetColumnItems(1,&ColumnTitles,1,-1,CATDlgDataAdd);
_MultiListInfor ->SetColumnItems(2,&ColumnTitles,1,-1,CATDlgDataAdd);
_MultiListInfor ->SetColumnItems(3,&ColumnTitles,1,-1,CATDlgDataAdd);
_MultiListInfor ->SetColumnItems(4,&ColumnTitles,1,-1,CATDlgDataAdd);
_MultiListInfor ->SetColumnItems(5,&ColumnTitles,1,-1,CATDlgDataAdd);
_PushButtonDelete->SetSensitivity(CATDlgEnable);
_PushButtonExport->SetSensitivity(CATDlgEnable);
}
}
接下来时删除按钮,删除可以选中的列进行删除操作
//-------------------------------------------------------------------------
// Callback on PushBActivate of _PushButtonDelete
//-------------------------------------------------------------------------
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
//删除选中行
CATBool RowIsSelected;
for(int i=0;i<_MultiListInfor->GetLineCount();i++)
{
RowIsSelected = _MultiListInfor->IsSelect(i); //找到那个被选中的行
if(RowIsSelected ==TRUE )
{
_MultiListInfor->ClearLine(i); //删除行
}
}
if(_MultiListInfor->GetLineCount() == 0)
{
_PushButtonDelete->SetSensitivity(CATDlgDisable);
_PushButtonExport->SetSensitivity(CATDlgDisable);
}
else
{
_PushButtonDelete->SetSensitivity(CATDlgEnable);
_PushButtonExport->SetSensitivity(CATDlgEnable);
}
}
最后是导出功能,此处使用CATFileDlg 弹出对话框导出txt格式,此对话框点击ok后需要调用自己定义的回掉函数处理!
//-------------------------------------------------------------------------
// Callback on PushBActivate of _PushButtonExport
//-------------------------------------------------------------------------
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框
pDlgFile->SetVisibility(CATDlgShow);
CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt
CATString filterExtension = CATString("*.txt");
pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
//getCurrentTime
CATUnicodeString myTimeStr;
CATTime myTime = CATTime::GetCurrentLocalTime();
myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");
//fileName
CATUnicodeString fileNameStr = "PLM之家培训导出信息表_" + myTimeStr;
PrintMessage(fileNameStr);
pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
int iTypeOfInput = 0;
//添加文件选择框确定按钮事件回调函数 ActOnOK
AddAnalyseNotificationCB (pDlgFile,
pDlgFile->GetDiaOKNotification(),
(CATCommandMethod)&PLMHomeRegeditFunctionCmdDlg::ActOnOK,
&iTypeOfInput);
}
void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
{
CATUnicodeString fileName;
pDlgFile->GetSelection(fileName);//获取选择的路径
fileName=fileName+".txt";
const char *filepath=fileName.ConvertToChar();
ofstream outfile(filepath,ios::out|ios::trunc);//用c++的输出文件
if(!outfile)
{
PrintMessage("打开文件出错!");
return;
}
outfile<<"姓名"<<"性别"<<"年龄"<<"电话"<<"时长"<<"学习科目 "<<endl;
CATUnicodeString name,gender,age,tel,time,subject;
int ColumnNum=_MultiListInfor->GetLineCount();
for(int i=0;i<ColumnNum;i++)
{
//获取MultiListInformation中的信息
_MultiListInfor->GetColumnItem(0, name,i);
_MultiListInfor->GetColumnItem(1, gender,i);
_MultiListInfor->GetColumnItem(2, age,i);
_MultiListInfor->GetColumnItem(3, tel,i);
_MultiListInfor->GetColumnItem(4, time,i);
_MultiListInfor->GetColumnItem(5, subject,i);
//此处需要调整字符串的输出方式,使得txt格式整齐
name.Resize(6,' ',0);
gender.Resize(4,' ',0);
age.Resize(4,' ',0);
tel.Resize(11,' ',0);
time.Resize(4,' ',0);
subject.Resize(22,' ',0);
outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
}
pDlgFile->RequestDelayedDestruction();
pDlgFile=NULL;
}
,,,,,,,,,,,,,,,,,,, 支持!!!!!! 厉害了!!!
页:
[1]