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

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList6 r' R# p% D* E. h: c: ]# H
此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!! Z2 l- i) E6 L5 z, ?6 v

) U2 ]; O# [! I* ~3 ^ QQ截图20171230224401.png
' X5 k. z! e3 q) d- f( l# L; N. [% G
0 c! \9 d8 l- H$ M7 u- P! `$ ~
[mw_shl_code=c,true]//-------------------------------------------------------------------------
' r. \2 h9 L! X, zvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
3 \- U1 x4 N$ X4 Z2 ?! M{
8 Q, y( I7 e5 I2 j    //Add information
" \  ]2 S8 T& g( ^4 j) }
7 T) l7 a0 m0 H" g# h8 ?8 X        CATUnicodeString oCellContents[25];
+ U* _  }2 l1 n. M5 f& u        ////////////////判断是否所有的信息都填写; K0 q, G& s( Z+ }2 J( S
        if(_EditorName->GetText()=="")
: ?6 N! n; U0 I1 |        {% @8 @- d3 j7 @6 B
                PrintMessage("请完善用户名信息!");- n- N  `; g* X$ r
                return;
! m$ e  L+ [; Y$ B/ W  Z& F% z8 Z  s        }
4 k2 A, o, C& L) m         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)
4 a! q6 q8 |9 f# j* m9 H7 J4 K        {: w  K* Y5 W* a$ }
                PrintMessage("请完善性别信息!");! j# [. {3 J" H
                return;
" U' j- o5 V3 Y) Y9 A+ w$ [6 X3 J        }
& _: x. W& z, m7 q         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)
2 t; b: E5 J3 B0 ]; ]" w, |: A: f        {  x- q- ]# J: ^/ W) G% O
       
. l; h/ C3 p" o( i- V& ^  b                PrintMessage("请完善科目信息!");2 V- H/ i8 |7 Q* Q2 c9 c+ Z
                return;) C, `- A+ r9 u$ p
        }0 y5 [4 V9 e' [" _* G
         if( _EditorTel->GetText().GetLengthInChar() != 11)/ N9 V- [+ S' W  b
        {
4 ^+ j# U% ~5 `7 V  i8 G                8 @! d; d) J" H# n: f; z0 f
                PrintMessage("请完善电话信息!");
5 H- H0 e' z+ a1 F2 z                return;
% ]9 A7 t# U! k5 w* ]9 Y6 ^        }
( Z- {. C* E1 \3 M        //////////////判断是否有相同的名字已经添加在MultList中1 [% C% J9 q& q/ t; C: R0 |( R7 M- [
         bool isIn = false;/ c$ q5 b. b: b3 {* q: F3 z
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)7 j& z; R5 e0 Q, `
        {       
( t* A/ u( A0 ?1 z' `                _MultiListInfor->GetColumnItem(0, oCellContents,i);- N1 P6 `. f6 w+ F4 W* ^4 ?. ?
                if(oCellContents==_EditorName->GetText())- r* O3 @) D# h
                {$ p6 }$ W3 _) C" W3 ^
                        PrintMessage("同名存在,请重新输入!");
- ]- I+ s( p1 I1 c6 b                        isIn = true;$ ]! N( Q! Q- v4 b$ q& i- r5 \
                        break;
( J- j( V8 {8 c# w3 W                }
7 [: G) b0 u* d! x0 }        }
8 O+ O! Q! w4 p; ^, Y$ s( o4 T* k+ b* z: B: W# B: }) M
          if (isIn); y3 k) U) d( x1 l5 y
          {2 R7 {$ J& z$ b
                  return;) h8 N% `* t' q. h
          }
0 T7 x4 N) g& T          else       
1 a; n. v- Q, \          {
- |: h$ x. c: E0 [0 N                ///////////将收集到要添加的信息放在ColumnTitles[6]中,/ a2 n6 p: a0 ~0 q* Q2 d, l( K
                CATUnicodeString ColumnTitles[6];5 ~' [8 v. f. k5 l% t
                //收集姓名信息
1 h0 Z; Z- ^9 e: g% {7 {                ColumnTitles[0]=_EditorName->GetText();                               
3 ]" C3 P8 j$ b; _          //收集性别信息
& u: [3 E5 S+ Q" t+ X2 ]- r  e                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息
8 l7 a) c* Y  w* q8 R# d                        ColumnTitles[1]="男";
; |1 l/ q9 ^) I                else if(_RadioButtonFemale->GetState()==CATDlgCheck)3 N2 f" v; K- c7 t* R1 I0 w8 N' \, L
                        ColumnTitles[1]="女";
9 _9 `: D8 Z0 Q  H" Z          //获取年龄6 s- C5 \9 |. p' I" ?
                CATUnicodeString iAgeText;
3 A# w! b; h. d6 M3 c                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
1 j, ~) V* j% w1 `                 ColumnTitles[2] =iAgeText;
) T  ~( h6 x" j8 X( g: J2 M                 //获取电话
" Y! x# ]& Z" {8 g, e6 G* }& S5 b                 ColumnTitles[3] =  _EditorTel->GetText();4 R  o3 z3 P% K+ z7 t7 H/ W
                 //获取时长
% U( m3 D3 F( x& {: e, Q; B                 char msg[256];8 r% N) j# L6 y0 D0 [5 z+ _6 y$ Q
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());
. _) k9 j; d! `7 x                 itoa(tempInt,msg,10);7 Q% g5 S" L$ k8 C% ~( V
                CATUnicodeString iTimeText = CATUnicodeString(msg);7 W$ X1 c9 O/ V: m  b- v9 W
                 ColumnTitles[4] = iTimeText;" E7 Q/ i( X* _* u# ^7 a6 q
         //收集学科信息
- @/ z) U: p8 u, h2 y        CATUnicodeString iText;                          W, }( n3 n0 m; M- _
                 if (_CheckButtonCAA->GetState() == CATDlgCheck)8 z# B3 I8 V+ a8 c
                 {8 r4 t4 r: ?4 A# y
                        iText += _CheckButtonCAA->GetTitle();
$ ~2 o" p, o2 y7 ]                 }
) K9 o' D; U/ a0 z& Z3 X* f2 p- m0 J$ o: @6 b. \: q- {
                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
; h. t8 X! m$ K3 P* x% m                 {
  i1 j9 @. w3 ~  p* G                        iText +=  _CheckButtonNXOpen->GetTitle();
% L, P! ^. }4 F3 B7 t* L$ T- [. k                 }
7 D  X' Z$ @% u4 M4 j9 T; j! d) _8 e# l* J
                 if (_CheckButtonTC->GetState() == CATDlgCheck)6 t1 P" b; f' J& \) k4 {. v! K
                 {% X& i& |1 n/ E( y& Q! C2 n6 s, m
                        iText += _CheckButtonTC->GetTitle();4 h" p& }9 I/ F% _7 X( p" t- o
                 }' b/ B& ~# s+ S" r6 F5 z
( @8 @- E, O; j4 R2 M
5 U! d- h) l# O, L
                ColumnTitles[5] = iText;
( h& Z9 O+ V+ _8 h6 H3 ?: A% _
                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems
; ?. A" g) B- ?1 x' }0 X& m                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);: R1 L* m+ u% k$ s8 h/ \+ }  X
                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);
' F. I) Z, V- m& D- P                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);" I# k! }4 I9 H9 e2 d
                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);
" d+ @* G- r% q! B/ f& W                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);
; A# {( ~  o" |. `* l# B& o                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);
8 N8 U% K- b3 p' e3 I- e. U+ T# P1 }* \2 h* a4 Z9 ^" ~
                _PushButtonDelete->SetSensitivity(CATDlgEnable);) w$ ~. B  n# F
       _PushButtonExport->SetSensitivity(CATDlgEnable);$ m9 J, F2 L/ ~- C
        }- O9 m( R, Q" }: }/ {
}
0 A0 L' N3 I/ K2 {[/mw_shl_code]
- t0 K! p- z4 s9 C
上海点团信息科技有限公司,承接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

接下来时删除按钮,删除可以选中的列进行删除操作
8 G' M" |' L8 @" w9 b2 k! [[mw_shl_code=c,true]
( G- l; H. }. ~9 u9 Q4 L6 X* R//-------------------------------------------------------------------------5 K. Q- a. i4 X. d, C
// Callback on PushBActivate of _PushButtonDelete, w7 S2 a2 S0 {; a/ V2 s% E
//-------------------------------------------------------------------------7 a+ Q$ U# B* J0 f
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)8 Q. t. |5 F  S
{
/ K) r7 A3 j7 T/ v8 T  & v! H7 l  S* s' X+ t/ W( O1 x- j
        //删除选中行
/ P" _' ~  o+ ^, O
3 v8 l  a1 a) }, ^; x/ b6 f, {+ y        CATBool RowIsSelected;$ e* ?3 T' B5 \# w, k5 x
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)5 ]+ A7 Q* _: b7 d9 X5 K3 T
        {
5 x( Z7 U, S9 n! |                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行3 Y( Y4 D6 i5 T6 t4 D
                if(RowIsSelected ==TRUE ) ; o; n* P6 s0 v1 w2 l2 _
                {) x; {. ~/ a: J4 I# b
                        _MultiListInfor->ClearLine(i);                                        //删除行9 n) [6 k7 q/ U8 d4 _- [4 n
                }
9 d5 a) A9 R4 w9 c  r+ p        }
8 v& c  T0 M0 C  h6 \- l
+ P! T" n& L) B; `1 O2 S; k
' ~; U0 n6 m" t8 ~. }8 c* Fif(_MultiListInfor->GetLineCount() == 0)
3 U, \3 c  i0 a7 W: e{0 T: R% `! k6 o
        _PushButtonDelete->SetSensitivity(CATDlgDisable);& o, \) `9 E  d- L9 K2 F# n/ \
        _PushButtonExport->SetSensitivity(CATDlgDisable);
7 f3 Z9 e# u2 W8 X}; G1 k, C/ f1 g1 A" F
else  @- e6 \/ K& c  U
{8 R5 [( x% j: ~5 x2 T4 f% D
        _PushButtonDelete->SetSensitivity(CATDlgEnable);, Z6 @2 l& l: b7 D, B! ]  E/ F
        _PushButtonExport->SetSensitivity(CATDlgEnable);7 a" [  j2 |7 O6 [0 c/ I1 O
}
. C$ E/ h& c, o/ r7 d. A}. w) a; U  _# V5 R
[/mw_shl_code]
! b* y3 y" p/ J5 z  u* j7 Y9 C! \
1 c) q9 ]5 \& v, B3 h2 X% Y) Y3 x4 p8 a' f* _
1GIF.gif + u( e, ^* _/ I, p0 g( _
; C1 i; \/ [# O" O+ b3 W. e8 E
上海点团信息科技有限公司,承接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 4 D! D5 f* W, X9 ^

* z+ R. H: k& X5 p
/ e3 {' p: T" ^0 I% m1 U6 T2 r& M[mw_shl_code=c,true]( z/ n1 a7 w, q
//-------------------------------------------------------------------------, R" n. i. ~3 m. n: u% z
// Callback on PushBActivate of _PushButtonExport: G* r; m9 @$ A$ j2 o
//-------------------------------------------------------------------------7 @3 ^1 W* m$ `5 g7 }7 x
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)" N" n7 f5 p. k$ _# W
{. q  O3 X; B. F4 v; K. w% c

+ S1 H/ i2 W# }% w3 N! N        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框
0 J) {( T/ P7 P4 C, ^  r; X5 m* C* e        pDlgFile->SetVisibility(CATDlgShow);       
" O% F6 T  k8 K. v( o. n$ [        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt! t1 A# J9 s& ~( D  A: {) ]
        CATString filterExtension = CATString("*.txt");- L. }/ D0 @$ ^1 L6 m
        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
7 V: [* M/ v# t        //getCurrentTime; y* ^& U8 J2 n! }' e- \( B
        CATUnicodeString myTimeStr;5 y9 m4 @8 i6 h3 k
        CATTime myTime = CATTime::GetCurrentLocalTime();
1 c" t5 h; |1 f3 B        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");- o: J' S* s" R# h8 h% j

& L9 ^8 @, c7 a6 e) G5 V$ E        //fileName$ B0 i5 s1 _! K
        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;) Y% G  Z3 M; z$ p+ W
        PrintMessage(fileNameStr);( O7 ]4 ?4 @+ f# o6 t
        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
6 r0 t* K7 H. Y! m# A! B. F: A% `4 ^2 }7 ?9 q. c4 g

: c* T! ]8 q: v9 S) _        int iTypeOfInput = 0;# F$ u* H& J- Y! D; y4 b% o
        //添加文件选择框确定按钮事件回调函数 ActOnOK. p1 o% G1 f. z! r9 _$ l3 M
        AddAnalyseNotificationCB (pDlgFile,
2 P; c$ |: j& ]3 L; Z' [! R& t) {% Q                pDlgFile->GetDiaOKNotification(),- \$ ?  [; t% n0 _1 i8 }
                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,
6 l! D6 ^; x5 X' X6 e# k                &iTypeOfInput);
  B% x: m9 T+ ~9 V2 y8 d0 k5 g8 t8 `  O! r
}' H/ T) [* I- ]2 k

/ R$ p) t) D( w: `void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)  }3 t8 ?8 ^" ^. T! Y
{" G1 A7 b2 x3 a2 `: E' [
        CATUnicodeString fileName;8 m" Y, H6 E' X* d8 O3 T
        pDlgFile->GetSelection(fileName);//获取选择的路径! {3 ~2 q% @. L0 p4 H& ~6 x

7 B8 U: i( b! l0 M- Y; [        fileName=fileName+".txt";
: Q& \/ i. V# w        const char *filepath=fileName.ConvertToChar();
& `4 [) C) p* y5 \' S/ g+ Y        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件% ^$ u& \: U/ i2 O: J- j# ^5 l1 c
        if(!outfile)         
1 ]( F9 V6 k' W5 K        {
5 O- c$ Y! e5 ]! L: l# o8 U                PrintMessage("打开文件出错!");
' ~5 A  ], h' _                return;5 ]+ |4 d" d- S- O' R4 I1 k
        }/ F/ n! q# R) n- h- S) e
        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;: ]! N5 }7 s* T" Z$ ~! B& S+ P9 _) k
        CATUnicodeString         name,gender,age,tel,time,subject;
' I5 n" k+ Z5 ?+ m8 J$ }* G        int ColumnNum=_MultiListInfor->GetLineCount();. Y" i3 {* @$ W4 V3 V
        for(int i=0;i<ColumnNum;i++)9 i3 T3 `' q# V6 S0 d
        {
- K, D' l! {4 m* _! Y9 |) D3 o2 N# s! L                //获取MultiListInformation中的信息: b' V. Q2 E9 _8 k* I
                _MultiListInfor->GetColumnItem(0, name,i);! F" R" @" f( ], x; O
                _MultiListInfor->GetColumnItem(1, gender,i);
" ~( A5 \7 E, |                _MultiListInfor->GetColumnItem(2, age,i);
# g$ J# ?* X  f9 g                _MultiListInfor->GetColumnItem(3, tel,i);- z6 g+ r- `5 W5 e$ v/ ]% Z
                _MultiListInfor->GetColumnItem(4, time,i);7 }0 _4 X) d, F3 S% _$ o  m
                _MultiListInfor->GetColumnItem(5, subject,i);
# S' G% D/ p  F8 P8 d  ~3 m                //此处需要调整字符串的输出方式,使得txt格式整齐
* _4 w2 h# d  G* a: ?6 m7 a                name.Resize(6,' ',0);4 i' }$ }5 o  k' {# _
                gender.Resize(4,' ',0);  m% R% n, Z8 I: o+ F" H
                age.Resize(4,' ',0);
0 Z3 f# B* w# H1 i7 B2 W                tel.Resize(11,' ',0);+ Y6 F5 m  C/ U' E7 u
                time.Resize(4,' ',0);
8 x& s4 p2 L1 n                subject.Resize(22,' ',0);
4 W4 \9 V4 Z: u/ @9 p0 f                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;& h, o, v$ C  E3 \) Y$ G' j' N
        }
3 |3 L% x1 l0 b/ `% v        pDlgFile->RequestDelayedDestruction();7 T" \( K, o7 N# S7 W2 F
        pDlgFile=NULL;
0 |9 V) V( j+ ?# t% v}[/mw_shl_code]
9 ?7 o& O+ B7 Q0 |& L/ M% D) L) X) s9 |7 G* g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了