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

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList* i* s: C" @! [. `: y% P
此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!
3 }( J9 _; t% N6 h/ ?
+ s2 P, ]5 S' T; Z1 ^0 S. O; e$ r QQ截图20171230224401.png ) i& p& L- T. f9 r1 @7 G! M$ u

# z/ v0 Y) p* ~5 J8 Z; b5 \3 z) O# Z9 W4 K+ C% j4 [
[mw_shl_code=c,true]//-------------------------------------------------------------------------
' N( h) T8 L( p: V/ A# ovoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data). b8 K  r) |# i( i4 l
{+ r: y  I' K& r8 u8 B
    //Add information 1 C! _+ G! E8 P( Y9 a7 `4 H
- w8 z% ]9 K1 ?% G. n: _
        CATUnicodeString oCellContents[25];- K- N: C! L- n) g: a
        ////////////////判断是否所有的信息都填写. c! Q/ f  j- q* q  f
        if(_EditorName->GetText()=="")/ Q8 P% e6 S" A" D/ ^
        {6 p) X" d& b4 N2 o6 T
                PrintMessage("请完善用户名信息!");
) R' x1 j4 i0 m/ l: o/ Z( x                return;' }. n2 `: e2 ]$ J9 Z
        }' \$ K5 g) M/ q( a
         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck), [3 i0 B1 O8 p5 h, l( C4 v
        {, p) d4 k/ \+ _8 X: J% I
                PrintMessage("请完善性别信息!");; d8 \* h% g  m* U  K7 D0 o  O2 {
                return;) r# j" c, M/ k( _6 u2 J; s$ N
        }
, V& s- B9 N9 I& r( e* w. @9 i         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)3 [/ p. T8 B! C0 y  b
        {0 J  [3 z9 T0 I7 W) N( s
        9 c9 @* z- [5 y0 b* w! Y5 U4 K
                PrintMessage("请完善科目信息!");
# d# v% p0 n! R4 V                return;7 u7 z( U' u- S) c
        }  A, X: t1 I- j2 w0 L
         if( _EditorTel->GetText().GetLengthInChar() != 11), h0 _$ r* W; R4 s. g2 \5 Z" L4 {
        {
" _( g  i( f: {9 X               
! N9 g0 k) n0 E1 r3 i' u5 f/ I! J                PrintMessage("请完善电话信息!");4 m! s8 R9 e9 \7 A
                return;. \- ~& n" j1 P, }
        }
% w* m9 J  x0 I, d, s+ j- I% h: P        //////////////判断是否有相同的名字已经添加在MultList中
- z2 j! c% E: i" o# Q; {/ @; q         bool isIn = false;( T* V5 ^4 u0 G( E0 R9 h) F! P
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
- F2 q* \% V3 L, m) J9 P        {       
- f6 z/ p& s- U) y" |, k/ z                _MultiListInfor->GetColumnItem(0, oCellContents,i);9 E. J2 R  {7 g& l
                if(oCellContents==_EditorName->GetText()). G. G3 E- H$ r, v' q
                {5 b. j, Z% R7 [# u; A6 n7 w2 x
                        PrintMessage("同名存在,请重新输入!");: L5 v& M3 v1 W* ?- e' E
                        isIn = true;8 _) ]7 S. V7 x: p9 H
                        break;
! |$ Y& F$ L9 ^7 m  O5 S3 r                }
: \# f7 {( D( c6 u' `        }( Y4 w3 V# C. V0 i! N! K4 O

  S1 L# K2 _7 u0 y, u          if (isIn)
4 v( g" g2 ?( S" ?% R          {% b, S* M) i- `1 h* I; H
                  return;
6 s. F; c, M4 N  j7 w, r- |/ \          }
  c( g$ r, R4 b7 I# ]7 p: T          else        $ y4 z% q( g- `" i
          {* W' x6 \5 M/ W# ?  [
                ///////////将收集到要添加的信息放在ColumnTitles[6]中,
) Y5 h, M5 i7 Y& M                CATUnicodeString ColumnTitles[6];
, o/ D. W5 g4 h# X/ ?9 {                //收集姓名信息+ L- a& ^5 D7 |; p4 B7 z8 [9 ?2 }
                ColumnTitles[0]=_EditorName->GetText();                               
  D2 h0 }4 o7 F4 e5 p          //收集性别信息
9 R7 H. h# V$ t2 [                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息  X8 j, }& V$ X6 z; |3 u7 @" F' G: I
                        ColumnTitles[1]="男";
% ?+ ^+ n8 p3 R7 ]0 M# B* F                else if(_RadioButtonFemale->GetState()==CATDlgCheck)/ k7 L, d/ f2 D- ~* d
                        ColumnTitles[1]="女";
2 Q3 {3 U' X8 z, p; w( W+ y          //获取年龄" q3 X2 h' _9 k
                CATUnicodeString iAgeText;
/ e  M8 D' P6 e/ c/ q2 Q                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
$ ~5 N! c2 v3 U! {1 M                 ColumnTitles[2] =iAgeText;3 ~  P6 _0 G( r0 H$ R
                 //获取电话
) o# ^/ J1 W" o1 z. s8 s8 r$ J                 ColumnTitles[3] =  _EditorTel->GetText();
6 v: N$ R3 a; O9 W+ r) O# P                 //获取时长- b' J( c5 Y5 w. u. q" G
                 char msg[256];+ V* d# V1 ?; N+ |$ H' x: @8 c
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());9 D) S2 `: B% m$ |* G0 `7 n
                 itoa(tempInt,msg,10);" e# o) o, k! q1 C% ]! d! Y1 x! W9 l
                CATUnicodeString iTimeText = CATUnicodeString(msg);
3 T4 Q( K- C# t) g7 j& j                 ColumnTitles[4] = iTimeText;
! O! t' F+ [+ C+ S! i         //收集学科信息# f5 `- {% m/ \5 t( z9 D0 c
        CATUnicodeString iText;                       
4 D  o) C( K( `2 E! {                 if (_CheckButtonCAA->GetState() == CATDlgCheck)
3 l/ D3 z; P; d) s. @. L                 {
$ ^. \/ V/ L( N! \  D! x4 [                        iText += _CheckButtonCAA->GetTitle();7 [; l0 d# R( m$ m
                 }$ x* a+ j7 q* t2 ~$ I

0 G- Y7 J. r: M/ L                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)( D! ?/ L; A9 m& N( B1 A; i, _
                 {: c% d9 K7 v- U0 N
                        iText +=  _CheckButtonNXOpen->GetTitle();
* u5 [, M) R, r) \- {0 ~8 j                 }
+ H! G1 m# ?1 I; V$ h' u" @! f3 {3 @
                 if (_CheckButtonTC->GetState() == CATDlgCheck)
) N2 k8 j4 g% x- r% q( F& V                 {7 Y8 i$ l- \  q1 p. ^7 b
                        iText += _CheckButtonTC->GetTitle();9 j( f+ R' Y0 N
                 }( [0 d+ C4 h4 w$ U+ O5 D2 [8 T
4 _/ @; s3 \6 B  M4 @( c: {
- q  }; C; v; c, \* P0 n
                ColumnTitles[5] = iText;
$ M" V9 x! ^( [  P, n. j: C0 |4 \3 I1 u' p- A* H' s5 G
                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems
, c# ^/ S* L0 F& f. H/ U                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);
) W  U1 z8 B) O8 o- a6 e                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);3 M% d& H* B/ U( p; @# K3 D" A
                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);
$ n3 ?# ~! j8 _6 Q                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);
. D( w- V# [$ O6 l1 b, Z                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);  z0 B2 m# L- f! Y5 V9 ?
                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);4 k5 U9 ?$ {8 B8 e8 H+ \; v2 `! o

- Z, X1 g. N2 ?) I) Y  z                _PushButtonDelete->SetSensitivity(CATDlgEnable);
6 m. _- Y/ u& A' G       _PushButtonExport->SetSensitivity(CATDlgEnable);7 e. D% J; R5 x4 v
        }
; B4 ?% n. F+ A- y' p9 ~& b}
6 n( F5 q6 [! r! E# e[/mw_shl_code]
3 F0 C6 X6 v  @5 ^) Y# W% k
上海点团信息科技有限公司,承接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

接下来时删除按钮,删除可以选中的列进行删除操作7 i2 ]/ W& k8 ?' ]. Y- g
[mw_shl_code=c,true]
# m2 p9 s$ ~) N& u: u5 ~& Y2 @//-------------------------------------------------------------------------6 L- O3 v3 Q* V7 l, p- X3 `# Y  f
// Callback on PushBActivate of _PushButtonDelete* y* x$ q+ N+ Z. Y( k% S% d; m
//-------------------------------------------------------------------------
3 ?3 u2 ]0 x+ A; f) [- @* nvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
1 ?6 {$ w1 ]2 F$ V{  F* G' H! [2 Y, e! p
  
2 I7 W. p) M" k* }3 N, i, _        //删除选中行- F7 h. H6 _# }7 G2 h0 K+ H! H3 R  f

7 R" S' ~7 ~. T        CATBool RowIsSelected;
% t0 t# W; L* k: s3 e8 V  H        for(int i=0;i<_MultiListInfor->GetLineCount();i++)/ T4 S7 l/ E& s. C2 |
        {
& Q- h1 B' H, }$ o8 Y) Q                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行' W4 @6 H7 i2 q2 U0 u
                if(RowIsSelected ==TRUE )
3 {0 M3 n( j3 k; I9 x                {8 [- V6 l- A8 B0 o3 f' t
                        _MultiListInfor->ClearLine(i);                                        //删除行
8 b9 q; d2 A4 f( K, [0 \                }. v7 t/ \1 {2 r6 o/ _8 p
        }7 \9 i1 s4 J% i9 `% F; M3 }
; A9 @/ k5 ^& `9 q  S

/ s/ D1 B( s% h' U7 g( n+ J' fif(_MultiListInfor->GetLineCount() == 0)" M5 }: P9 {$ R& i- [% E# T, @2 w( ?
{# V* d9 _( }7 C1 Y8 F
        _PushButtonDelete->SetSensitivity(CATDlgDisable);0 D& @4 Z+ d4 p5 E2 a8 l% E
        _PushButtonExport->SetSensitivity(CATDlgDisable);
# h" H$ Q: t) S9 q, x' v& Z}
* ^3 ?* G/ M3 f& Kelse
# v  y' Y4 T# P& ^5 |6 J! K( K; I{4 u$ P2 M9 S' V9 V" e& y
        _PushButtonDelete->SetSensitivity(CATDlgEnable);
0 |2 d& J7 q4 V5 T& b  X        _PushButtonExport->SetSensitivity(CATDlgEnable);. \# m6 x( S! D
}  l% |8 }0 b0 U: P. [
}
6 Z0 D6 g/ Q* g2 i) r% H[/mw_shl_code]. g4 ?( I* e( Z# G% h0 M

9 p* s" n) H% N. C  ]: ?9 k/ p5 {2 [; {: N  N# u
1GIF.gif 8 u4 A& U0 y- f! `
) S1 c8 c5 H/ G/ Q. E' x. \
上海点团信息科技有限公司,承接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 & K; ]' w% C& k3 i- F* s; O- w: F  ^
4 S1 y" b' Z9 i# F/ T

0 w: C7 J# s. @4 |( A[mw_shl_code=c,true]
% R6 A: [( a( U+ u% x8 c9 I//-------------------------------------------------------------------------) c4 J1 r0 \3 x) w$ h) H1 e4 o' p- R
// Callback on PushBActivate of _PushButtonExport: A* C: ], i8 q5 L. D
//-------------------------------------------------------------------------
6 V' T7 R4 d, V2 ?  g) P: P5 |! kvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
( E# q+ `8 O5 w1 D{
$ z0 a$ j1 n  g4 x$ w# g" Z$ U' I
$ I" Q* i  ~) w; `. P        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框1 q" ^4 i! B5 G$ H- o
        pDlgFile->SetVisibility(CATDlgShow);       
6 B; \) @5 Y, Z9 I# g& b7 }        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt. ?( y2 I# D* i, q5 K
        CATString filterExtension = CATString("*.txt");
! L7 w4 f# B3 p        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
. a  L( L0 k  k& {7 l( ?' i        //getCurrentTime
8 g- U6 r8 q7 e) `7 l        CATUnicodeString myTimeStr;
- y, v2 m, u3 c3 ?/ |        CATTime myTime = CATTime::GetCurrentLocalTime();
. N+ A+ g) }- K( F        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");
+ W! i& w! [% e: n7 d3 R9 V
7 G5 l4 |. v' j  w        //fileName
/ M' y1 }2 t3 U& Q5 y. b3 F: w% {. N        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;/ A4 S% U6 L0 O6 ^. I; p9 M: t$ q8 G2 I
        PrintMessage(fileNameStr);: Q6 R1 o: x' ?( ?
        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
( L- q( t% T& O5 R; @+ s
+ _( q0 ?2 Y  }  ]2 n& H! B; D" O. [( _& s1 s
        int iTypeOfInput = 0;7 h- M& O. i' ^& G+ ?! @8 G
        //添加文件选择框确定按钮事件回调函数 ActOnOK
( G+ R! v# P  K' @- {        AddAnalyseNotificationCB (pDlgFile, 0 G1 f' ~) g( L: v/ ~! {0 N
                pDlgFile->GetDiaOKNotification(),# M" z+ `& W+ w) o: R; Q! t) H- k+ p3 O
                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,
5 ?) a6 A, Y2 r7 B+ _9 m9 f6 K                &iTypeOfInput);* b' @2 r" J" ?1 {1 [  _
& l# ]' j& R0 T9 O" e% p+ K- ~( K
}# _" P$ x9 I- t$ C
4 F/ R0 P4 G5 g
void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
$ p9 ~2 V" i! V8 N0 ~' S0 I6 H{( `$ s8 o: j* y* L
        CATUnicodeString fileName;
0 @4 |  U) `- i  y5 L0 \; m        pDlgFile->GetSelection(fileName);//获取选择的路径
4 g! R0 A' x; U  h. E
. d; x2 \% B7 J1 [. e        fileName=fileName+".txt";
# s, s, W' Z  j- [% y        const char *filepath=fileName.ConvertToChar();
4 k0 q, O+ i9 S# b) [/ ?' y        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件
- C, m: Q, w% R! {        if(!outfile)         
  \; R6 j; Z2 N* H/ B/ D$ Q        {
+ x: ], {- E7 O                PrintMessage("打开文件出错!");
# f$ D3 H8 G3 q( X                return;
0 k5 c3 v) T" R% S        }
+ ^, e5 K( f6 w. `+ V        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
- D( w) R5 N1 ?. _        CATUnicodeString         name,gender,age,tel,time,subject;
! x5 I" q  o1 W+ k! Y$ h: i        int ColumnNum=_MultiListInfor->GetLineCount();
' C7 w, w8 K! H5 q& Y" J        for(int i=0;i<ColumnNum;i++)
  r: J7 ]( m) p# `7 A, u1 E        {9 F0 `+ S* k. t+ H/ h; k" j: [; T1 C
                //获取MultiListInformation中的信息7 `: t& @0 o5 Q5 R
                _MultiListInfor->GetColumnItem(0, name,i);
. m" X. s# e+ J! e; f% N                _MultiListInfor->GetColumnItem(1, gender,i);% r; b8 K  @8 B# Y) T5 p
                _MultiListInfor->GetColumnItem(2, age,i);
% Y  |7 @: m6 j& T$ i) E5 V, L; d                _MultiListInfor->GetColumnItem(3, tel,i);; {* ?$ e/ m5 z: Z4 P( M( j
                _MultiListInfor->GetColumnItem(4, time,i);7 u* Z+ t9 f2 N6 v: t: m
                _MultiListInfor->GetColumnItem(5, subject,i);
3 U- Y& E2 i/ v* K7 u$ F                //此处需要调整字符串的输出方式,使得txt格式整齐
" x! k. C- o8 D, E: `                name.Resize(6,' ',0);% \+ w4 ~8 I+ ]/ Y! F4 H) q4 C
                gender.Resize(4,' ',0);
. C4 L. [3 u0 B8 n$ S1 s# B# d: c% }- @                age.Resize(4,' ',0);$ A$ v# m- V( Q) o3 n3 v9 ~& j
                tel.Resize(11,' ',0);# Z3 E2 O) F* l5 L) l
                time.Resize(4,' ',0);; D2 M. H' g- b+ ^0 y
                subject.Resize(22,' ',0);- X* K/ ?2 W- i* X4 @" R2 D
                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
$ ?, l- V. `* i; P9 D( F+ ~3 o0 u        }* M* s) |7 D0 ?, R, j: G! q
        pDlgFile->RequestDelayedDestruction();
" E' e! _0 j2 R) ]1 H        pDlgFile=NULL;: K4 U/ O1 ]% R
}[/mw_shl_code]/ j  p/ u% U, k  l2 |  y

5 y" e1 K  e1 \0 Z$ o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了