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

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList
2 z1 Z/ j# R5 A6 H此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!
6 T0 {3 z9 L5 R+ I2 L
) i1 O/ V1 t& s3 @0 ]" \+ K QQ截图20171230224401.png - }, S/ v8 D4 q
: q* \8 r+ @1 G' B# a1 ^
4 C0 S. A1 Z" m! ~$ G, Y
[mw_shl_code=c,true]//-------------------------------------------------------------------------; O: q5 V3 K1 s3 l
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data); O* Z. T& t' u% ^6 ?5 I$ [) b
{. A% x' I& i3 w; s* ~
    //Add information
# r3 x& m+ h: u
3 z3 W+ q! b( F" j+ i6 A        CATUnicodeString oCellContents[25];
) A( Q8 H" Z1 P& p9 r0 ~- E        ////////////////判断是否所有的信息都填写# f. w2 P2 ~  y3 c8 ?
        if(_EditorName->GetText()=="")
$ Z4 p, J' y2 t; b1 S3 k, P        {
1 R, ^' _: T+ J& H                PrintMessage("请完善用户名信息!");/ z9 C& b9 U  ?9 F- i
                return;
7 b) n, o4 n7 Z! c1 p! {/ C        }4 T! t$ d- ~! a1 G2 \: [2 H
         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)) D3 f' g8 g7 S  F; d5 C3 o
        {
3 u+ f: v$ m. v0 U# U( R8 x                PrintMessage("请完善性别信息!");. c/ b4 k1 Q6 G/ e  e8 X, ^4 ?  ]* P
                return;. R6 _, C8 Y1 r6 L
        }) u+ H$ H- [3 h+ s5 Q0 p7 F1 e  v
         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)" [/ M$ _2 o* Q  r- |% d0 f
        {
' h0 P- O7 o1 f3 ^       
0 k) F  B' p4 f6 m) s* \( B/ i                PrintMessage("请完善科目信息!");$ @/ y! B# r1 D: R$ [/ K
                return;2 o/ Q8 R7 h& Q4 z
        }! [  s3 }+ m) b1 V
         if( _EditorTel->GetText().GetLengthInChar() != 11)' D$ I9 n4 t3 c" `
        {- r2 O. O: M& ?3 W2 M3 f9 `
               
6 W% O: T! G/ O: Q$ g                PrintMessage("请完善电话信息!");1 A: Q2 k  X1 @3 c9 p4 ~* h) E* ?# O
                return;
) E; `6 c( _6 P' x8 p) [/ r/ V        }* x! h$ \0 J8 G  G/ h
        //////////////判断是否有相同的名字已经添加在MultList中( n- Z* {) o0 p, @' ~' c  J
         bool isIn = false;
- [$ Q( |( K7 H4 v        for(int i=0;i<_MultiListInfor->GetLineCount();i++)' S) m# p4 p. E5 S! X
        {       
4 e. }  V8 j: i# M3 Q+ X( R                _MultiListInfor->GetColumnItem(0, oCellContents,i);  Y+ l2 w- C8 X0 q6 ~: x9 J. }
                if(oCellContents==_EditorName->GetText())6 z/ D. i: P! {; q& c4 X
                {
8 K9 p3 C/ t/ a# q6 x* i                        PrintMessage("同名存在,请重新输入!");
6 ?8 X! l) H  I0 _                        isIn = true;; s8 x# Y9 s9 e3 ?0 P; k6 {3 o$ ?
                        break;. a7 A; _+ w" S
                }
: I; A$ p0 k% D% r& Q/ f3 ]3 I( |        }
  M& y9 ~8 ^4 M
# \1 T7 a4 G$ ]2 Q          if (isIn)5 h4 L0 ^8 K5 y! M
          {
7 l- E% a# {6 j                  return;  q/ h, P& e3 J6 c+ {" Y
          }
. z% M9 \2 M( O' n# h: v0 {          else        * a, ^/ C- L% t4 S! ?* R
          {8 r# i* P) V& H0 S
                ///////////将收集到要添加的信息放在ColumnTitles[6]中,/ n3 k6 u* Z0 R, `. C! j
                CATUnicodeString ColumnTitles[6];
( Q0 j/ M8 r7 k: g( E1 Z+ g                //收集姓名信息
: q& ?$ p9 k' |8 I0 U5 g: H& F( ?                ColumnTitles[0]=_EditorName->GetText();                               
* h- a1 t8 |+ M' Q          //收集性别信息5 Z: X2 Y" @6 \" D
                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息
# m7 D: T9 |& K( _# d- |# l                        ColumnTitles[1]="男";1 _- n1 ?& N! O) K0 z) b6 D: N
                else if(_RadioButtonFemale->GetState()==CATDlgCheck)8 k9 ]0 [5 l$ Q# r
                        ColumnTitles[1]="女";
' I9 w2 r. x$ p; k( m- J          //获取年龄
9 h1 q# I4 D& x3 ?$ Q1 d# W$ Q                CATUnicodeString iAgeText;
3 d8 X" d1 F9 m, T                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
7 ^) s5 X2 n. N, A9 R0 N  e                 ColumnTitles[2] =iAgeText;3 [( P3 s$ B' k& x6 o5 _
                 //获取电话4 e2 B. I  E3 n' x: C, n3 U
                 ColumnTitles[3] =  _EditorTel->GetText();+ ?, g& [, Z% N
                 //获取时长. p( S; L7 h) R: H* @
                 char msg[256];, @1 p5 h, s6 T4 m5 @; x0 Q" c
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());
! N. H! C) h9 V( q- B                 itoa(tempInt,msg,10);
. Z' F2 q& e  k. m* Y/ P                CATUnicodeString iTimeText = CATUnicodeString(msg);
4 i; i6 L( @, N/ M6 F+ S                 ColumnTitles[4] = iTimeText;7 B4 Y' t7 S0 `% m' c
         //收集学科信息
  K2 p# j: m# k$ ^2 a8 [3 p        CATUnicodeString iText;                       
  `4 [/ u: |2 M                 if (_CheckButtonCAA->GetState() == CATDlgCheck)# X9 |' Z3 d! V0 B
                 {5 B* z& q: \/ q/ }, P* h7 G. e5 a& J
                        iText += _CheckButtonCAA->GetTitle();, n0 I; I' K- X* I
                 }
8 d- F3 Z: d' ^2 @5 [% Q
0 T# N) z5 {: J( s. Z0 g) V# _                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)% Z5 }' @* N% h$ |
                 {
) R3 p7 j+ P" e5 X6 K) t4 D$ }                        iText +=  _CheckButtonNXOpen->GetTitle();  v" r5 M  s# \/ H3 R
                 }
1 O8 L9 J  Y- O* n! O7 u& ~
* L: m$ c: ]7 M$ _/ n" l                 if (_CheckButtonTC->GetState() == CATDlgCheck)
3 C3 k, m) t4 z, ]. _8 a. x* r                 {5 t* x3 s# x+ z5 Q0 Z/ Z
                        iText += _CheckButtonTC->GetTitle();
" r& R  P& z7 }% Z  f9 [                 }9 k# W6 N' {0 f/ Y7 b8 n3 I

: p: w: s$ o7 O- V: J) ]  x/ G) m) F1 A* G# h
                ColumnTitles[5] = iText;
5 h6 ], ~( J, h4 m9 V! C  y
3 ^- a) z8 B* X* B                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems! ?$ g. a/ L! e
                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);' N1 |* ^9 y+ _1 E( F2 [* T
                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);- e& D+ V6 S' A; l$ H) O
                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);
  o. M$ H- M, c                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);
, I; `/ j8 A+ x' c                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);
+ ], W/ s% ~9 l2 l! E  h5 |( F                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);
  X/ A6 w- U+ |8 j. D6 Q% L3 A
1 U/ X/ h8 S6 _7 X% v8 a                _PushButtonDelete->SetSensitivity(CATDlgEnable);. |1 |+ m, h/ y7 ^  {# ]$ d& J2 A1 u+ ~
       _PushButtonExport->SetSensitivity(CATDlgEnable);
$ \: y3 ]5 T5 c8 [, Y5 y        }
2 S0 }# x! b2 H4 ?4 m}& @) r( w& C" N* H
[/mw_shl_code]
, F. |5 X; b  h
上海点团信息科技有限公司,承接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

接下来时删除按钮,删除可以选中的列进行删除操作
$ j+ m% ^0 ]# a- K) `[mw_shl_code=c,true]: u  }% w3 Z; {! C: m0 X
//-------------------------------------------------------------------------9 g. Y. B2 R9 g2 M$ v( u
// Callback on PushBActivate of _PushButtonDelete: Q2 M  |6 l% f9 v# U; \$ A  _
//-------------------------------------------------------------------------
/ m) b0 x4 M% x" Z5 E" y! b- lvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
& ?: _* w# l: g. m0 {9 o) J7 I{4 k- Y5 n, m5 O7 O) Y4 ]! F
  ! Y% J) S5 Z/ A8 N
        //删除选中行
6 ^% c7 I8 K) G! u
9 p& r0 u) k" f* m        CATBool RowIsSelected;
9 S3 N9 o% s  U' b& G/ d9 Z        for(int i=0;i<_MultiListInfor->GetLineCount();i++)+ x4 s  ]" }5 o. V5 |" A: D6 }! ~
        {
. M. V$ [* Y3 N" l/ Y" j$ E; F6 k6 Q                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行& o, p0 k0 W' Z# u9 A
                if(RowIsSelected ==TRUE )
9 x9 I9 ^0 p+ C& X5 ?% _1 L; Z                {
9 W2 Z1 E8 g8 D2 ]                        _MultiListInfor->ClearLine(i);                                        //删除行6 }# }: e" X8 Y) X6 @( p
                }
7 G9 j+ L1 r% F5 D( N: ^        }+ d8 |; f0 z$ I) F

) D1 d4 g5 s% v- r1 ]9 S
' v" i" J0 e) t8 a0 C! y9 Sif(_MultiListInfor->GetLineCount() == 0), B8 {0 _& h' G  W0 M9 j* B1 d7 E
{
: h4 s4 Z% G  d4 y( K) [0 b        _PushButtonDelete->SetSensitivity(CATDlgDisable);
" H4 E$ n* p6 M" [        _PushButtonExport->SetSensitivity(CATDlgDisable);( }3 E4 O- j! j" Z. t8 p
}% T$ X" m2 c5 b; X; P: x% `  J' @
else# \& [! b: n3 d1 i* g4 C: Z
{( Q, q% x4 J+ x' ]+ i4 U
        _PushButtonDelete->SetSensitivity(CATDlgEnable);. ?2 K$ G0 U/ F2 w. H) j, d
        _PushButtonExport->SetSensitivity(CATDlgEnable);
/ s% i5 V8 Z1 p8 T# _. F- y}
5 E  F) t- K+ n}0 n: ~5 l' }8 k$ }
[/mw_shl_code]& K! o& R3 }* V# ?

6 Q, ~# M# N3 `( o1 n+ x+ F& i  v0 e% `9 T# z2 S' ^
1GIF.gif ! P% C( v0 I* i* T& Q% V% j* ^8 f% P9 n
, I  c& K9 P0 n2 G, h- m# d
上海点团信息科技有限公司,承接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   E+ C* r0 o, p) ^3 B
4 [0 v. ~: m3 A8 z2 ?( X
3 `8 n  @2 ~3 a" y& O
[mw_shl_code=c,true]* E' J5 G2 G" f6 R$ ?' U
//-------------------------------------------------------------------------
! \$ M8 X4 |1 _6 F  P, {7 z9 d, Y// Callback on PushBActivate of _PushButtonExport
/ J: [8 p1 V) l( h//-------------------------------------------------------------------------
7 F8 K3 m& w% d" {5 V2 J* b. svoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
2 f- {9 W0 F( k- K{6 F3 o/ G$ A, T0 m

! D* V  P) q" j$ `8 a- z        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框3 N' @* J+ ^0 U- p  E7 k- n/ k1 t/ Z
        pDlgFile->SetVisibility(CATDlgShow);        6 @: c% _$ \# O: \
        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt6 K+ w" l3 ^2 y' w5 k! ?) i( V
        CATString filterExtension = CATString("*.txt");
& m' a1 K0 ~4 Z* C        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
" X3 i7 j. N0 Y# i* @( H        //getCurrentTime
; n: C9 n, a# U' L1 c        CATUnicodeString myTimeStr;
, H2 e4 x6 r6 t; x        CATTime myTime = CATTime::GetCurrentLocalTime();
! }8 q! i! p6 v/ o9 k        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");
, e) c" O2 S, E/ x7 v% ^3 C& H# R3 G
        //fileName+ g! F8 ^' a$ c5 ~; i
        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;
$ ~3 e8 `9 ^1 [: s        PrintMessage(fileNameStr);8 T0 i2 N: d$ ~$ \+ G( X0 {
        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录) m# d+ O2 \% D
3 m- E( T5 _. N: b

; K$ L* k1 v# g- K! J        int iTypeOfInput = 0;' e; K" q2 D; E6 L3 t& p2 l
        //添加文件选择框确定按钮事件回调函数 ActOnOK
; w6 Z2 V2 p/ M2 ]        AddAnalyseNotificationCB (pDlgFile,
4 r" S) b# ^. j& B                pDlgFile->GetDiaOKNotification(),
8 S/ z: m" p& {- _0 {- k                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,) U# e# |1 A( k; \' @, O) \9 p
                &iTypeOfInput);" z( R( G7 V/ Y* ~( g- b
# S9 a1 O" T% G! ?7 b
}# T, a3 q  s5 \$ e2 M. b( P

7 P3 J9 A# }) Hvoid PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)! b; t5 S2 m# f& V
{
1 G. v& C) z4 \        CATUnicodeString fileName;
( n; I" z, D0 r7 c7 R. D        pDlgFile->GetSelection(fileName);//获取选择的路径( w2 Q/ o0 Z" Y( T3 c: t) F0 T* B

* B( O2 n. l/ C* K6 x  S        fileName=fileName+".txt";$ z/ C5 \+ O  t2 D
        const char *filepath=fileName.ConvertToChar();) N8 C& f( s- o5 X6 x) s
        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件
% k0 b- I8 d( ]        if(!outfile)         
3 e6 v" m% e$ ^( X. i        {
) r! \$ z! N" V; J                PrintMessage("打开文件出错!");( R6 f$ Y! q, Y. a- N* F; V2 @
                return;
7 B* e, g, g2 W  T! P0 P1 D( i        }7 U7 T- F9 c0 o) T" S0 f  J: V6 E& y
        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
" L7 l0 [) S/ h3 i: s3 _        CATUnicodeString         name,gender,age,tel,time,subject;- e( T9 D* @0 g& t! K# V
        int ColumnNum=_MultiListInfor->GetLineCount();0 s" }3 S0 }' _/ Q6 N
        for(int i=0;i<ColumnNum;i++)
3 @+ B' Q. o& Q- I- G. j% s- k& S        {
: n) A! |4 q% Z' A% G6 O                //获取MultiListInformation中的信息
2 k# D  x+ B7 O, }( F6 k- U/ ]                _MultiListInfor->GetColumnItem(0, name,i);
1 R! H/ {* r1 R& J1 o! M1 u0 V                _MultiListInfor->GetColumnItem(1, gender,i);8 ?" v1 N6 x1 d" j: W1 o: G4 Y
                _MultiListInfor->GetColumnItem(2, age,i);
$ [) B+ J. B- j6 w& l4 X                _MultiListInfor->GetColumnItem(3, tel,i);1 o. ?* s! Y: G  w  d
                _MultiListInfor->GetColumnItem(4, time,i);$ i& m- D! F" R' n
                _MultiListInfor->GetColumnItem(5, subject,i);3 O' s7 h' R5 s" B
                //此处需要调整字符串的输出方式,使得txt格式整齐5 j, L0 s/ g7 ]! u  S
                name.Resize(6,' ',0);& ~; e7 O' B0 [4 U+ i0 r  Q
                gender.Resize(4,' ',0);
9 q: [4 b- n- {7 `$ M6 H                age.Resize(4,' ',0);
5 \1 W: o" I8 s/ B' Z# [                tel.Resize(11,' ',0);
, L8 Y7 H! L% c8 G7 A+ Q- V/ U, L4 c                time.Resize(4,' ',0);+ n9 A* q4 [( J% D8 O" j: ^4 u
                subject.Resize(22,' ',0);
" J! d$ j$ h! i7 P' A( r                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
- P' Y3 j6 O) {' H        }$ }) }2 F- @- P% U6 e) |, u
        pDlgFile->RequestDelayedDestruction();& P- V' B0 D1 X" M& G7 V9 U
        pDlgFile=NULL;% F( Q( J  Y- P* R
}[/mw_shl_code]8 i  V5 [& t# W* B8 m
; Z$ @+ C: n0 Q6 ^7 p9 H) k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了