PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList* x( S: W: w, J9 q. G1 {. P
此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!9 r0 ~$ C9 H$ O  Z# K' J

6 _  U* V8 D) L7 u* \) k QQ截图20171230224401.png
1 Q1 M6 h7 f& ]
8 p) w6 \: ~4 Y' T2 L: |
, E& O& G3 R. b" k" \[mw_shl_code=c,true]//-------------------------------------------------------------------------
! [  z1 H, U5 z3 T( E! v/ i1 kvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
6 Y9 |2 M! W( p  [: q0 d. k! t{
8 r# Y8 v2 K! w7 V) F9 ~    //Add information   u, u  m: g$ O% c6 S5 c" ^1 [6 f

4 p: Y) G. L7 z. V$ u        CATUnicodeString oCellContents[25];
1 [# A+ j( K, @& ?' p* j* N7 d        ////////////////判断是否所有的信息都填写
% `  v* Q' y: h& k+ T1 Z        if(_EditorName->GetText()=="")8 N' r$ D+ W: |3 M) z8 A
        {/ k+ s4 i! i+ L3 W& n; y5 }
                PrintMessage("请完善用户名信息!");7 k/ F- e  d2 a+ f' p9 n
                return;. m: ?6 T, y$ d0 I) W  |* m  f
        }4 W. D; b% C! v& P; ~+ c# l
         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)
* [0 V+ r" _; y. L1 e        {" Z; u) j$ L2 ~* _3 u* z
                PrintMessage("请完善性别信息!");* m) A! H% f5 g4 S) s
                return;: R7 ^# y2 h1 Y+ g! @$ }
        }
. ~) p/ h' @3 y1 F/ |         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck): k' e# f7 B: r; X! y0 L% d
        {$ Q* P) b2 P* j$ w7 Z: h$ `* k
       
' J6 {+ m, _. t1 r& |) q: J                PrintMessage("请完善科目信息!");) X9 N0 D0 H( x2 O; ], p1 P0 H
                return;
& N  P5 f6 u: i7 Q5 }( V1 c) o        }
$ T5 M8 B& a4 `8 d; Z5 P         if( _EditorTel->GetText().GetLengthInChar() != 11)5 N+ {& {. }& ?
        {
, B3 e& a+ q) L! q: r" \) o  j               
" p; ]1 l& Y4 w                PrintMessage("请完善电话信息!");
2 p* C- C. e  E                return;) o4 L9 n0 |& T5 |* N* c+ a4 ^' W. x
        }2 V2 `  w9 @2 b
        //////////////判断是否有相同的名字已经添加在MultList中# v  x2 o: n  G* \
         bool isIn = false;. g1 `6 [1 ?( h5 h2 ?6 w* q! ^8 E% c
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)+ R* D/ v$ s) `4 j
        {        # @- `  [* d" F. r
                _MultiListInfor->GetColumnItem(0, oCellContents,i);: B1 L  R; P6 k5 v+ G2 b) V
                if(oCellContents==_EditorName->GetText())
3 _$ S9 ]5 {9 {6 I' o* F7 ?5 v1 {3 I8 h                {
6 {" D! w2 K; }' y' ~                        PrintMessage("同名存在,请重新输入!");& S( \0 M$ {  \1 p
                        isIn = true;) L/ ~3 \/ G" J- B" ]
                        break;$ c) M9 o, G/ U9 D. D' m# f7 d
                }) S: ^& a  O, F& ^, P
        }1 x9 v: C  _& G- n

; }- w4 l, ?4 d# E          if (isIn)" X9 P; `( z$ k! N7 Z5 z: I" A
          {2 c$ {/ p( E/ U6 v+ z, Y) F
                  return;  E* _9 J9 q' x" i0 Z9 C9 d  ^
          }
/ x8 a3 T2 k6 F( v          else        . O' k( @* q9 A* a" |0 Y
          {
" R) s' x) d: I7 ?                ///////////将收集到要添加的信息放在ColumnTitles[6]中,
/ s- K4 f) g# t& G3 ^; l. }& w                CATUnicodeString ColumnTitles[6];
2 J* r: V6 N2 n/ i  {4 l                //收集姓名信息
( x; v# _  M+ b. o1 R                ColumnTitles[0]=_EditorName->GetText();                               
' e! F; q" K/ T! P2 j% F  c          //收集性别信息
5 o: s: E/ |2 j! ~3 E( }9 g; ]                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息
: }! w2 j/ _5 Q6 n                        ColumnTitles[1]="男";" S0 t7 s) M" U6 y! y
                else if(_RadioButtonFemale->GetState()==CATDlgCheck)
6 l# F$ k( I; I& F, b  }" N1 @) D                        ColumnTitles[1]="女";0 o9 J/ L- }: ~# Y1 i% v) ~" [
          //获取年龄- W5 R4 a# d$ `% z3 z, X( f
                CATUnicodeString iAgeText;
3 j& N% w" u: l  _! ?                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());; j1 g0 h. E6 F. ?/ e+ S/ a
                 ColumnTitles[2] =iAgeText;& a' D2 |- d' |( y$ D" e
                 //获取电话4 E2 k( Y9 \& ?! h9 O7 `) O6 [* f
                 ColumnTitles[3] =  _EditorTel->GetText();/ ^  ~5 P; ~8 W) Q2 k
                 //获取时长
! M4 _3 A0 s: t1 |                 char msg[256];; j, M. ?& Y/ D# [' H
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());
. Z4 o& @% v9 S: `+ A                 itoa(tempInt,msg,10);
- ]) ?0 @8 S  \, y                CATUnicodeString iTimeText = CATUnicodeString(msg);$ o9 f  c# Y6 P( W6 {. l, E& F
                 ColumnTitles[4] = iTimeText;+ b! y4 D4 _& J: J
         //收集学科信息* C8 `4 Y# y/ D  f+ s
        CATUnicodeString iText;                       
" J, L  h: j8 F" s1 w# G' d& O                 if (_CheckButtonCAA->GetState() == CATDlgCheck)
2 k4 m* ^% @& \+ D7 }                 {
5 d3 F# y/ n' W                        iText += _CheckButtonCAA->GetTitle();( C( H( C9 c1 f, y
                 }
5 \$ \  T& H/ I/ p2 G% ^: g  F/ t% E% ]1 r6 ^
                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
, W7 h$ p3 N$ h                 {
6 ^( v7 Z1 Y2 B4 t5 {9 Z                        iText +=  _CheckButtonNXOpen->GetTitle();; z4 u) J; V" L3 f
                 }+ F6 h% \) |  r' V- z) p& V

. x& V* ?# Y! w/ ~  r6 B  g                 if (_CheckButtonTC->GetState() == CATDlgCheck)
: w4 q* [6 c4 v                 {
; u- ~5 L' l4 z                        iText += _CheckButtonTC->GetTitle();
2 E  ^2 j8 F& ?                 }
1 \& m( y  Y0 F; y, F2 I2 z+ j5 j: W& V) |, l
6 \3 e! s7 X8 L6 e  D1 R( S
                ColumnTitles[5] = iText;
; E7 g  s6 p( g% z7 ~: g. d2 J) ], m7 \; I: M& N
                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems' \4 K/ w3 U& E% i
                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);
# T7 m8 i& Y) D+ s3 T                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);
' m- G8 u+ [. v* A) b                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);& d- q# [: A. P) A
                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);. l2 |/ F. }- R+ ~+ x
                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);
2 ^- m6 s9 {! r4 W5 s# {3 ^                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);
0 _5 {. i% \- @' j+ C1 x6 ]& d% q0 p( X% n& }* ]/ E
                _PushButtonDelete->SetSensitivity(CATDlgEnable);* K7 a; i6 p" y
       _PushButtonExport->SetSensitivity(CATDlgEnable);  A+ F/ q, U: l
        }) U+ D$ q, P# N: A* }6 O* E8 b  U
}- S% F. P' C" b- r* ], p' t4 X, W7 q
[/mw_shl_code]9 F9 }6 Y7 p* v; k. Y/ a
上海点团信息科技有限公司,承接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

接下来时删除按钮,删除可以选中的列进行删除操作
  B5 k, i" h  O6 n+ J4 f" T+ c[mw_shl_code=c,true]
* Z- K: M" ~  _8 J( t1 u, H+ Q//-------------------------------------------------------------------------* l5 C: {9 `# b. S9 u, F1 x
// Callback on PushBActivate of _PushButtonDelete) s! J- W2 @% }& c* W0 V7 ^" {7 g
//-------------------------------------------------------------------------
: ]- j8 d% G' o6 ~1 h, F3 t1 w! |void PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
0 N- o* z8 k6 a- r8 ]- Z{& s! Q+ w- t! o, `% D% l
  # Y0 q# |8 `* t
        //删除选中行+ |$ n/ `7 y0 j6 I* e
  Y0 y- E6 n1 ?/ B) S. X) r2 J
        CATBool RowIsSelected;$ y+ p0 F; d1 S7 b  ]6 N1 c9 }
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)' _& J! n1 D# B3 \9 \. k) l
        {
8 f- D8 v# S6 P$ e; n( W                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行7 _, Q+ e# i) |3 O+ w, h
                if(RowIsSelected ==TRUE ) ' F0 F& t# f- u# y4 l8 A
                {
( A( L& Y2 K1 a/ t  x5 _, \. ~) G8 N                        _MultiListInfor->ClearLine(i);                                        //删除行
9 x3 X% D7 d* z+ ^. K                }% E5 C2 e: c$ O/ l) p! Y
        }
5 D+ U) T2 D7 i- h$ A) L
( m, |7 n& J5 S6 w- t) s3 W% ]0 U3 f! X; K+ p1 D( L5 G
if(_MultiListInfor->GetLineCount() == 0)& r7 g1 Z, a; z9 g$ h
{
* U: j* H+ w# ]& g5 k        _PushButtonDelete->SetSensitivity(CATDlgDisable);/ p! i2 J* ]3 T% E
        _PushButtonExport->SetSensitivity(CATDlgDisable);* k' w, ]3 x# N, f
}
; L( C; Y& H$ u( \else* }& b5 h$ l2 ]  }& L; ]3 z
{4 A5 e6 _$ D6 ~' B0 W& _. u0 U9 ^6 y. y% i
        _PushButtonDelete->SetSensitivity(CATDlgEnable);
0 @$ S+ {/ O' w" `3 x% X        _PushButtonExport->SetSensitivity(CATDlgEnable);$ A3 l0 [  p1 J. n: g
}
' c. O5 p  ~! z! ^* @  B! U8 M}
% [& S$ s$ V0 x! u/ {4 R7 _3 z[/mw_shl_code]
5 ]& f- w/ z+ t
8 A! x( D0 |! I5 ?- E/ h; E
# x( L8 P4 y) w6 G& y, s# w8 ~ 1GIF.gif * M! t! S* j7 G& G% p- e

8 O% b; W  z5 c6 w$ J5 L
上海点团信息科技有限公司,承接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
" ]+ o; ]8 V! v- y* m: S: C: z6 E( e- @. ~
# w- \& J7 l' l5 D+ I
[mw_shl_code=c,true]1 r8 U. D6 x1 c, n. y
//-------------------------------------------------------------------------- J5 A! a2 i9 l4 {. D  n* K
// Callback on PushBActivate of _PushButtonExport
" H5 q/ {  `5 J6 Z/ O& H//-------------------------------------------------------------------------
# x& m2 o: h: Z8 K* P' h6 Kvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)4 B/ R; F. Y: i4 l5 Y. M8 _
{
" J3 S. D$ B9 m$ `5 I3 n; ]7 Z7 u2 C. ? + W% I# E/ z3 |9 h/ K+ e, K4 f9 b# r
        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框
) w* h- K9 b" a+ M; E  o- o        pDlgFile->SetVisibility(CATDlgShow);        . ]; H! c  c! h5 e0 U( T5 Y* l
        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt
( ?4 x0 u" V# j        CATString filterExtension = CATString("*.txt");
7 \8 Q# R/ O' Q& c        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);, G+ X! C/ ]( @/ c3 t; |/ e
        //getCurrentTime
1 T+ ~7 v# t, m- W7 O# I) T) H        CATUnicodeString myTimeStr;4 Q; v7 }5 B- p/ m  L( i! b
        CATTime myTime = CATTime::GetCurrentLocalTime();
! U* n7 e; A) i7 U0 ^        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");
. ?3 R) O8 q. {. h; y
/ c- B* A6 d4 \- ^        //fileName
5 z$ Y2 n! H/ y+ [8 {3 @        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;- n% o& V) Q7 _* e8 s
        PrintMessage(fileNameStr);
2 V# N% K: R. y# \/ o. }, _/ r& ?/ Z# p        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
( Y- o$ z* D! X) e. N
, n$ N6 ]8 {8 |& M4 {
5 k$ v& E; z, s. @        int iTypeOfInput = 0;
  p5 O: E8 y" X        //添加文件选择框确定按钮事件回调函数 ActOnOK
( D" H3 w5 h6 ?4 K2 I        AddAnalyseNotificationCB (pDlgFile,
  e0 W/ M' ]+ V1 ]/ H                pDlgFile->GetDiaOKNotification(),
$ s9 U' n5 D5 p9 ?1 b                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,4 ?+ i; ]" G  e
                &iTypeOfInput);& y$ B) E2 B! H9 p0 [+ z$ W2 i

: K. J; F( Q0 r% G: X" |0 g}
: ^* s8 W+ Y+ w0 f3 {# L7 E5 F7 [4 Y0 v5 A/ ^7 ~7 E- a
void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
- }% \/ y7 L  w{
. X" b3 |: ?1 m* k. f        CATUnicodeString fileName;  N. O2 A, S9 g- n- o! [9 t1 ]
        pDlgFile->GetSelection(fileName);//获取选择的路径. y& P# B( ~* i; l

+ O  N) u& S) p% ~' Z        fileName=fileName+".txt";# g& J) r4 @$ L! g2 z/ u
        const char *filepath=fileName.ConvertToChar();
! d( F. S( I) _        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件
$ q+ b6 y% A% l# ~& |        if(!outfile)         
0 v! J. N3 c% Y' U6 t        {4 p6 z; n/ k9 p9 ]+ _
                PrintMessage("打开文件出错!");/ G6 [8 m5 a6 D  _" U1 F) ~
                return;
0 h+ D1 G2 U( P$ a        }7 e' ^; g  \7 n5 X' I/ K
        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
) [- q! Q4 l* Z8 M$ b; [; A        CATUnicodeString         name,gender,age,tel,time,subject;
; O% H. y, J! B6 S        int ColumnNum=_MultiListInfor->GetLineCount();
5 X" \% k8 m  W6 `2 N- e/ y        for(int i=0;i<ColumnNum;i++)
  ?- ^9 h: E, |; r$ j- m        {7 P' j! t7 X5 V2 R& t& Y0 D
                //获取MultiListInformation中的信息
  i  L" q# I1 W* {                _MultiListInfor->GetColumnItem(0, name,i);2 Z) y7 }% r8 R$ z  M2 U2 R
                _MultiListInfor->GetColumnItem(1, gender,i);
4 L' H" x% T' n* q" B( C                _MultiListInfor->GetColumnItem(2, age,i);
% ]# d( D0 R" U4 z; S( d0 y                _MultiListInfor->GetColumnItem(3, tel,i);4 f* p! i3 r+ S* G1 {/ t0 d
                _MultiListInfor->GetColumnItem(4, time,i);
# R: ~( `/ }4 j& k                _MultiListInfor->GetColumnItem(5, subject,i);
  g, s$ [  f$ s5 N& _! M                //此处需要调整字符串的输出方式,使得txt格式整齐6 n+ X% g/ N+ J; F# S
                name.Resize(6,' ',0);
- s/ ?+ N, C: O; m4 B                gender.Resize(4,' ',0);
# Y3 P2 S+ v* D' G' n+ b                age.Resize(4,' ',0);
; T( [: ?: o' g                tel.Resize(11,' ',0);' D" {7 `, c6 j4 o( h+ e3 o" E
                time.Resize(4,' ',0);( K" t. W9 V1 [
                subject.Resize(22,' ',0);& L$ E. a' ]( U0 x2 `+ E
                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
+ s% p+ J1 A; Z3 \. a        }
) u% U5 D# R; H/ m0 [( p8 D        pDlgFile->RequestDelayedDestruction();
6 Y. i  g1 E8 `( ?3 H% R        pDlgFile=NULL;& C: H: d0 l* a" y9 H2 y" M1 P
}[/mw_shl_code]& k2 v% p  p4 b$ w- L2 B( H% ?5 p
/ ?, G1 b, G! ?3 z/ m* D8 C! T9 E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了