PLM之家PLMHome-工业软件与AI结合践行者

[原创] CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList

  [复制链接]

2024-2-25 08:45:10 6686 5

admin 发表于 2017-12-30 22:46:34 |阅读模式

admin 楼主

2017-12-30 22:46:34

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList
! S# K2 {0 ~, v5 X+ E) D此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!
1 @; P: c+ s2 R7 e( s$ s! O+ ~9 a) K. n  r; m4 _( n) |  B# e
QQ截图20171230224401.png # ]' a. x) H; a7 Y

7 ?: J& B- R/ y
+ ^. s/ b% V" M/ k[mw_shl_code=c,true]//-------------------------------------------------------------------------) Y3 y/ o! b  S3 r4 S
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
% X% w, E  c& Y2 R# [; O0 s4 r{
& M! z4 F5 o( q' A4 ]    //Add information
0 Y+ X( Z& a$ v6 |4 n0 v
7 L; Z9 T3 h3 _' }        CATUnicodeString oCellContents[25];
0 h4 \  n+ R  P7 c: r$ C6 T        ////////////////判断是否所有的信息都填写$ A- G* i4 |7 x; e2 G5 n
        if(_EditorName->GetText()=="")
+ U' b; P2 j, N' U$ {        {
" D& c; R9 M" \- O/ P. V( w+ `                PrintMessage("请完善用户名信息!");$ v/ U  W, ]9 s- Y* f/ C% g6 e
                return;
6 G. a5 X7 P% d+ e, n- m9 T" L        }. d/ q2 t- H5 e7 i4 i# R+ C4 y
         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)! D7 h; k* R$ J  [
        {. J7 k* x& S( k9 k5 B
                PrintMessage("请完善性别信息!");& W: |4 E/ f" ~- m) k! i
                return;* @- |. o9 d) i2 ~/ ^% R: n( I
        }
' P6 ]! m1 y/ |: y         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)9 E( s2 _+ o4 X
        {& u: ^. j! n( I/ a
       
: P" }5 j/ Y6 z9 |1 n3 ?                PrintMessage("请完善科目信息!");& Q0 t# O% _, ^/ H
                return;! O  L% S7 R# l3 @, G
        }
" e; V0 e+ P/ Q3 ?$ V7 C# Z2 N; I         if( _EditorTel->GetText().GetLengthInChar() != 11)
9 W. i/ y  A0 Z7 I& Y! z. ?        {
# R5 l0 h8 R* ~8 G9 }# ~* |                ' \0 \( t/ e4 b
                PrintMessage("请完善电话信息!");# I+ B" {! H/ \0 w6 m* r( X  _
                return;
$ u; i+ o% M, k$ _" C( `% o# j        }+ F9 X" T2 j* t
        //////////////判断是否有相同的名字已经添加在MultList中8 u2 q1 n8 X; C
         bool isIn = false;+ ]5 T  n: a0 p. H0 r) \( c
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
0 U$ |9 D1 I# ^8 S1 L8 B4 e, F        {       
9 @- B& o$ ?' B( O3 ~3 b                _MultiListInfor->GetColumnItem(0, oCellContents,i);0 Q( B8 G4 m& ]6 J
                if(oCellContents==_EditorName->GetText())/ C* v3 q$ [8 E8 l6 D
                {/ ]  l- X* C5 \8 N7 e/ l4 e& L( M
                        PrintMessage("同名存在,请重新输入!");3 L+ E4 n# P- @: x
                        isIn = true;
" V% z: |+ x8 i0 W  b8 G                        break;& T; ]7 [! J# s; S  W
                }' ~) {  F; V' o* h4 {" ^5 P
        }( s% K1 [0 A; h
6 H' E) ^- m! s6 X6 x0 c7 |
          if (isIn)+ p: \# ]. L3 a+ w) R
          {3 b4 |: B" l' x9 n; E
                  return;( a' V' k8 ~0 [4 F+ N5 O$ |  `
          }
7 M" a9 S4 N! r4 A+ K$ }          else       
) c% [- x( x3 t, q- x( D6 r" U0 \5 f          {
, v. y8 u$ [, u, j2 j, u3 q                ///////////将收集到要添加的信息放在ColumnTitles[6]中,
6 L/ v" G2 s; S( G( d8 a& z1 V/ G                CATUnicodeString ColumnTitles[6];
" _9 }) P+ \$ L. l8 r                //收集姓名信息- N0 q) j2 j. O4 |% W/ w9 r
                ColumnTitles[0]=_EditorName->GetText();                               
7 f( [5 W7 X8 @3 y  E, w7 t! W  e          //收集性别信息
7 z$ K# V+ C6 |5 r- M                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息
" Q" B4 x) n  y0 O" x                        ColumnTitles[1]="男";
+ N  _3 m# l' j5 m                else if(_RadioButtonFemale->GetState()==CATDlgCheck)
" S0 c9 @6 \! q) ?# e2 P* W8 ^                        ColumnTitles[1]="女";
) o, x  N/ ^, N8 V( k  W# W          //获取年龄& Q" W, U1 r& l! ?, N% I  u
                CATUnicodeString iAgeText;
# ?0 i1 ^  W2 J" Z$ `                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());' p  z3 w. r' M  H  O
                 ColumnTitles[2] =iAgeText;
/ T! I1 ~; s! C                 //获取电话' u1 x5 D1 g- m0 A2 t7 u; I3 a
                 ColumnTitles[3] =  _EditorTel->GetText();
- M) t2 ]6 p$ M6 u. h                 //获取时长2 O) _# u) V6 o
                 char msg[256];3 S/ c: @; s5 P, Q9 y
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());
! a6 }- D, Z! q; O- H                 itoa(tempInt,msg,10);9 ^4 F( O: c7 V8 Q
                CATUnicodeString iTimeText = CATUnicodeString(msg);0 a" x# Q% r0 v8 B( s: \
                 ColumnTitles[4] = iTimeText;
' k  b7 U+ q, c4 L0 o: o8 c5 l1 G         //收集学科信息7 X( u, }& l$ Y6 y0 L
        CATUnicodeString iText;                       
$ ^" d: M; m  d5 A8 c                 if (_CheckButtonCAA->GetState() == CATDlgCheck)
7 o. G! m1 q+ [) Q                 {% R/ ~. Z: H& Q4 U
                        iText += _CheckButtonCAA->GetTitle();0 k: A& s3 ^* ^3 i
                 }
; q, Z4 u0 h$ v% L9 W( E4 ^3 B9 Q2 L" m+ ]" h
                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
8 Y8 U4 l- C, G/ Z                 {' y9 V3 ?* N* F
                        iText +=  _CheckButtonNXOpen->GetTitle();
( z" j" \* U9 o- G* P                 }
" K# V4 c, g* C1 T) @
0 w$ {. C% r7 O6 F! B7 [                 if (_CheckButtonTC->GetState() == CATDlgCheck)8 L5 d) v# w) m% M9 l9 Y5 u" O8 I' x9 K' Y
                 {/ i2 t+ ]1 @# x0 `& W
                        iText += _CheckButtonTC->GetTitle();
! x  L* \7 h5 n8 Z  n4 a                 }
5 w' k" `& z% _/ ^( }0 u8 l8 D# w; F2 A

0 Y- c8 ]& V2 x                ColumnTitles[5] = iText;
# \( V! e: ?; \2 S- ]
& u* W$ E+ M0 _! q# A, B                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems! g$ @* j* Q, f5 W- O
                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);% _/ D9 I% L1 u. ~6 V- U( m
                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);
' @- i- F. _3 A3 E5 L4 [5 b6 k                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);
5 {" Q. [1 g/ W$ ]                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);+ ^2 o6 O2 u% R! k  B
                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);2 h- E6 P# p- w; l
                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);, h& B5 \! B" c

$ i% o7 e& a8 |                _PushButtonDelete->SetSensitivity(CATDlgEnable);
7 o1 V- @- U( G# }       _PushButtonExport->SetSensitivity(CATDlgEnable);
# `( x2 w7 H2 k2 \* T        }
9 O2 M, g; F3 ^3 F}
) _1 X8 T! |2 y5 F5 U4 e[/mw_shl_code]
! {" q: `5 }) \# S$ {- W
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复5

admin 发表于 2017-12-30 22:51:37

admin 沙发

2017-12-30 22:51:37

接下来时删除按钮,删除可以选中的列进行删除操作" r+ b  k( V4 ?: g* }2 M/ ~$ X
[mw_shl_code=c,true]) p* ?$ e8 L5 J+ ]
//-------------------------------------------------------------------------
, |) j4 Z& Q& ^# `// Callback on PushBActivate of _PushButtonDelete& h0 v+ s9 L5 P, U! F4 y
//-------------------------------------------------------------------------
2 N7 ^8 U4 |7 B+ m0 }void PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)# o4 g' {& r) B
{7 u: B' g+ e/ \+ Q! r& U1 w
  : u, f+ ~& N6 n1 r
        //删除选中行" v! S; U& u  S+ u6 j

8 O" P( t/ S: D! ^( g3 k7 Q        CATBool RowIsSelected;& k/ X$ j( Y1 _: K# p( }1 R
        for(int i=0;i<_MultiListInfor->GetLineCount();i++). y* s6 P+ X4 k* M
        {( {7 C3 T7 f4 f4 q9 B  _8 W
                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行
6 J5 ]1 ?. ?( c" t, r% _                if(RowIsSelected ==TRUE ) 1 ^3 Y# Z5 h& e' E' r) K; x
                {3 S) }" Y6 i5 A5 ^3 r3 I4 }
                        _MultiListInfor->ClearLine(i);                                        //删除行: P; c% `$ {. n
                }! R3 }( |0 G) B4 A3 {
        }) X. Y/ H4 y/ l. R5 L2 ^; S

* h4 H- T5 f% @( S
$ e: h/ G" A8 yif(_MultiListInfor->GetLineCount() == 0)
( n6 n5 W* L3 |4 `7 _{, P" w  `3 p) ~# r6 C. u, i
        _PushButtonDelete->SetSensitivity(CATDlgDisable);
7 ?4 T* Y& m* @# b" L9 F- T        _PushButtonExport->SetSensitivity(CATDlgDisable);
' m$ M# G; W( C2 q3 B}
% d% I9 V! V1 n5 V5 H6 belse
1 Z* t& k9 q. ?  [" c{
5 N. `5 J# `! w' ?2 @        _PushButtonDelete->SetSensitivity(CATDlgEnable);$ m9 |2 j: O- C$ q/ o0 C9 a5 l1 V
        _PushButtonExport->SetSensitivity(CATDlgEnable);- S* q) A4 C5 O. n. C1 m5 A
}
7 E$ L+ C% r0 x1 ]8 Q9 H8 _4 B/ ^9 t2 E}0 U8 w6 M: m+ B: b' o$ V
[/mw_shl_code]
- }6 W8 i! Q3 y. q; N, v+ j5 |1 N( R/ O% e. {
; I6 x2 q2 ]0 g( b+ q
1GIF.gif
5 O2 A3 @- \8 P1 {' j0 L
2 z. e0 @3 ~+ Z+ \
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2017-12-30 22:53:15

admin 板凳

2017-12-30 22:53:15

最后是导出功能,此处使用CATFileDlg 弹出对话框导出txt格式,此对话框点击ok后需要调用自己定义的回掉函数处理! QQ截图20171230225154.png
5 A& K, C4 |5 R0 w0 d
% X* s+ n  G: C7 Y* I1 @9 P) r/ ~" h5 d/ M, s
[mw_shl_code=c,true]
/ F/ s1 {' ^6 E3 d$ ~  I' \! F//-------------------------------------------------------------------------$ H4 k  v( ~# `+ `$ d3 b  O, a
// Callback on PushBActivate of _PushButtonExport5 V7 o, c) Y7 g; A+ }
//-------------------------------------------------------------------------' \. [8 v: I) c* T8 v
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)3 ^. o7 C/ [  K4 f1 G% i
{
  n+ v' s7 M3 e% ]/ y. m
* Y% Q8 i  h8 j( D) p        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框' Z4 i, l2 y3 k$ S. U
        pDlgFile->SetVisibility(CATDlgShow);        8 ]) q; E# y$ j% s: @
        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt1 ~; A9 a* x  Q& Q
        CATString filterExtension = CATString("*.txt");; a+ x# p/ ^- }' `, @& o8 u! G4 Y2 ^  e
        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
1 X$ K3 a1 l; }! a. x0 D        //getCurrentTime
, G% c# N; M+ ^$ m: R        CATUnicodeString myTimeStr;, q: [5 @/ N: @/ ?% s: W0 u5 E
        CATTime myTime = CATTime::GetCurrentLocalTime();- _& e. m! M6 q2 L7 j4 M& X: P
        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");
/ P1 n7 K0 H, D' `) C9 a' }6 ~
7 n9 k$ f! F, x( z        //fileName2 @' q. B/ m) t! c6 A
        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;6 s/ O* g( L# G* J+ F
        PrintMessage(fileNameStr);
! Z0 O/ ^* p( d% {8 o3 u% k% P        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
* m. S( d0 L# u& U
! i; q* M6 q3 T, t) J* q5 p' j4 {0 D8 h
        int iTypeOfInput = 0;& E6 n6 ]; ^3 K: M( j
        //添加文件选择框确定按钮事件回调函数 ActOnOK9 o' |" K3 j) \3 V$ v2 }5 x
        AddAnalyseNotificationCB (pDlgFile,
8 |, V3 n- w- [4 S                pDlgFile->GetDiaOKNotification(),  \8 q+ _+ b: D5 l1 ]6 @; i( ^
                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,, b! A* m( z" }4 O  K' i" [
                &iTypeOfInput);) h! D$ |9 B6 z3 x5 F: @9 B9 i
* a% u( Z, J3 D2 m& o/ a
}5 b5 ?* J- h5 s% j; b) `
5 P0 K8 @; S2 U' \* J
void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)2 b, u, @: I- C3 n
{) o8 p) L* E$ y! P# E
        CATUnicodeString fileName;
' j0 ~" g4 M  p+ N3 N! ]2 |- M" |        pDlgFile->GetSelection(fileName);//获取选择的路径
6 Y6 H, O* z, A% g% L
; o5 |0 A) e( U; J( P) X        fileName=fileName+".txt";, f2 f  ?" B) f! u( z
        const char *filepath=fileName.ConvertToChar();
: S! ?& N2 `- c7 ^* W& ^. N9 X        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件
7 M' I  {1 j) A; A; d        if(!outfile)         & B: @1 o) T2 r5 [
        {
8 O+ M7 E* T* Z( t: `4 W                PrintMessage("打开文件出错!");
- I: J( ?5 @4 T9 g) H$ n- S3 y( }                return;% [3 o$ }. |5 H$ J. @: \' @
        }
& F* c) z* R4 X( y$ W, g        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
. Q- O/ I& \7 [3 M        CATUnicodeString         name,gender,age,tel,time,subject;& i4 H+ y. C; _0 o3 k9 S+ T# i4 V
        int ColumnNum=_MultiListInfor->GetLineCount();
  N6 d/ a3 M! F9 U1 o( G1 j        for(int i=0;i<ColumnNum;i++)
3 E  P8 p' P8 G8 L! g2 g        {( L- K" W* q7 D! q- G& d- v
                //获取MultiListInformation中的信息& Z/ Z  N7 n& K2 f% i# Z
                _MultiListInfor->GetColumnItem(0, name,i);
3 B; b& j% f! z  Z$ L! m  @, l                _MultiListInfor->GetColumnItem(1, gender,i);
( d& i# v6 n( |2 d& I                _MultiListInfor->GetColumnItem(2, age,i);; d4 Y9 _) w- `1 Y
                _MultiListInfor->GetColumnItem(3, tel,i);
" }  u* r; i2 H* S: B# B                _MultiListInfor->GetColumnItem(4, time,i);, p7 _* r& R7 i6 P# R9 J2 \
                _MultiListInfor->GetColumnItem(5, subject,i);
5 X, P8 c8 B% X4 Y) T- }! K8 D                //此处需要调整字符串的输出方式,使得txt格式整齐8 z( @/ h$ M5 `0 h1 G9 }4 D
                name.Resize(6,' ',0);; e- U4 W! I* b( x3 H* G# @5 M
                gender.Resize(4,' ',0);+ Q7 j" k. {$ ^3 e5 v3 b
                age.Resize(4,' ',0);: ?. l; |+ j1 o/ l7 C
                tel.Resize(11,' ',0);
1 M9 S- J, `  ^; `4 X                time.Resize(4,' ',0);1 D9 z5 A. d2 m, ]0 |* P! Q
                subject.Resize(22,' ',0);( a, D  x: A1 R5 G* U+ ~
                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
' D' {6 m6 I+ Q        }( C( M4 L- x! o1 B7 N
        pDlgFile->RequestDelayedDestruction();
9 q4 h$ B2 H. y/ u, @6 r- _! d        pDlgFile=NULL;6 \/ v% m7 A/ n
}[/mw_shl_code]
3 f( v, E4 T+ T' W8 G2 s' d8 J
4 U1 y, A" `& M
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了