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

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList8 ^$ J/ Y0 ?0 D5 h
此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!
# ~: L- L' t1 v1 r( O4 @% F: l4 F  ?, A5 Q8 X7 T# m! V( N
QQ截图20171230224401.png
$ k9 m3 ]& ], E9 O" t# g9 X/ |+ C' }7 y9 t/ M$ B+ E

( K4 Q" C: [8 O# G! R% d[mw_shl_code=c,true]//-------------------------------------------------------------------------
3 R" D2 E# E2 rvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
- ]' y# V6 H0 a& P' g{% l& [* O# T1 r2 x3 K6 c5 N
    //Add information . L- U7 m/ S/ ^
! V; V  r3 d. X: z
        CATUnicodeString oCellContents[25];
8 g/ q- U' W( d7 l        ////////////////判断是否所有的信息都填写# j2 N' c: e0 V/ }: _$ e
        if(_EditorName->GetText()=="")
: W" P. ~2 X- o, R' ]' K& y        {
' t3 f- Q6 S: M7 E. A1 z! M                PrintMessage("请完善用户名信息!");) h9 e: A9 D% {; [/ }, u* u
                return;
/ y1 L+ d; P, |, }- |% k# n        }
( u; G+ W' l& x. M  ^& O9 S9 Z         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck), k3 l. D5 x- E5 K3 S! C# Y
        {
8 s/ m; p& `- K1 I' G3 e, m7 L( `" ]% l                PrintMessage("请完善性别信息!");
" r. R# R  w# K                return;2 T3 {/ e& J$ {, n
        }2 d2 b2 }' C8 {; @7 t2 `
         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)
, Y: n7 H7 E" Q4 R        {
# g- z+ }  N+ g2 v6 L; O* {7 u1 W       
1 S, D, _( g( ~! }5 ~& h0 h                PrintMessage("请完善科目信息!");
% @' j5 z8 _9 y( O                return;# L+ k& ]* s5 u
        }* h0 i* C, D3 n; J+ G1 s
         if( _EditorTel->GetText().GetLengthInChar() != 11)8 B* K" i8 \6 z! _6 P
        {
3 r8 X- A: {; @: M, D               
' q# r) J! {, F                PrintMessage("请完善电话信息!");9 D4 w' M$ K- z7 U  G, W, a3 `+ @7 e
                return;
$ S" y6 B2 Q7 F( [        }8 G1 G6 ?$ _! a4 V; l1 E6 Y+ n
        //////////////判断是否有相同的名字已经添加在MultList中
% M, t; k% r) m. a: z         bool isIn = false;# j" y. o- v9 R( D
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
; ?' }) l; e9 `9 A" K) Q1 X, {        {       
8 C, Y7 X+ f* o                _MultiListInfor->GetColumnItem(0, oCellContents,i);7 G  P& ^+ I0 s7 B, C
                if(oCellContents==_EditorName->GetText())
7 k1 k2 l( Q- l) k) a                {
" q5 i) u1 i1 A% d/ J5 o                        PrintMessage("同名存在,请重新输入!");
( Z2 z$ m. T. H                        isIn = true;2 J$ t" N. j' e: s- M
                        break;
) Y5 [! {/ R, z, ~- Y                }
( G$ u' ^7 }7 u        }' w9 m. }& L( `6 r$ M( f$ B

; S  K/ P1 m. Y+ J5 m          if (isIn)5 s8 z8 a" O9 A; l, V) a
          {
: s- P: m  u1 F: H8 T% f. w2 {! `% W4 i                  return;8 L6 H( G* {% s6 N3 x' d
          }# x) L0 u( N) f9 p# N- R) t
          else        & l2 P# |! U# B! I
          {2 z# i+ T+ o' `' b% B
                ///////////将收集到要添加的信息放在ColumnTitles[6]中,2 o4 l6 {; o9 j' |* R/ c! w& P
                CATUnicodeString ColumnTitles[6];
  e( ^. N; N& ~  o7 f" b% p                //收集姓名信息
. J- b! A7 b2 {/ N' F. e/ p                ColumnTitles[0]=_EditorName->GetText();                               
3 [4 U6 N* m7 k* k& H1 ~& _: Z          //收集性别信息( L, y: b* @1 Z; j
                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息8 g3 r$ T9 n& F0 C- S
                        ColumnTitles[1]="男";
4 m5 {6 p# \. g: ]$ C% x4 r, X                else if(_RadioButtonFemale->GetState()==CATDlgCheck)
+ M& u+ c' E# }5 ^) F                        ColumnTitles[1]="女";
5 [% z( F% z& O4 ]0 P. r8 \; J! T! k          //获取年龄
" J7 n# K% S( I) V. R' E                CATUnicodeString iAgeText;: x6 i* H2 V$ l
                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
( V& J' l% t) r                 ColumnTitles[2] =iAgeText;$ ?" @3 W8 u# m4 v: L
                 //获取电话
4 W$ d% i1 F% i9 ?4 s0 ]                 ColumnTitles[3] =  _EditorTel->GetText();
0 `! L, l8 j6 A4 ~. p* |                 //获取时长
( \( y1 Z8 {5 }- v: o                 char msg[256];
1 w( p) V- x& y2 V5 j5 Z2 I                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());1 ]9 Q- R1 g; L; o
                 itoa(tempInt,msg,10);
) g5 Z; K6 E( {! Z" j: E: e! W! S                CATUnicodeString iTimeText = CATUnicodeString(msg);
4 Y+ a& y: N# ~6 n2 a+ v! A                 ColumnTitles[4] = iTimeText;8 ~) Y! R, F- ]* i7 V2 `
         //收集学科信息
' t6 m$ G( t' f# N# L        CATUnicodeString iText;                        0 V4 i, w" R/ m' V1 H
                 if (_CheckButtonCAA->GetState() == CATDlgCheck)
. G8 \$ V- u, x1 @$ ~7 }* ]# {                 {, y3 e+ ^7 g( C* c7 d
                        iText += _CheckButtonCAA->GetTitle();: H( A0 ~" L& }
                 }
& r' {$ o  M! z" h
. U( S- s' E% K. y$ V                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
$ k4 X! C# f: q8 u, l: T2 W                 {- B; e( J7 W8 h3 k% X# G8 t( c4 z8 \
                        iText +=  _CheckButtonNXOpen->GetTitle();, H0 m: b* K: \1 |, o7 G3 `
                 }  k$ x; y( m9 U* r" F
- T5 w5 U: O  R9 Q- a/ g) W
                 if (_CheckButtonTC->GetState() == CATDlgCheck)
3 J1 c& x- Y0 @7 Z6 }3 @: n                 {7 t* s4 W$ u4 M% l0 G$ r- ]
                        iText += _CheckButtonTC->GetTitle();
3 y- I1 Q: W' i                 }9 l9 m# f! i) M* i; |% f- q' Z% I' J
: Y; Z5 w' T$ R1 Y# D3 f* M" U# k

  c' M. |, z5 T( a( E1 q+ Z3 U                ColumnTitles[5] = iText;3 ?# w3 O; h- ~" G- F

- q* t% n8 Z$ ]. B, Y                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems1 ~1 N2 ^7 t% T- u0 K' v
                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);
, u8 @% a, f. _                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);
3 i9 X! G8 _  m5 F6 `6 j2 @                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);
, r  S+ }, s( H" S2 ~3 U, ~                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);
" p* x" Z/ T9 T9 O8 [* I* e% v6 \                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);
* W0 E$ |! i" v$ F6 X                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);9 a( j% f; C! b& K

# \9 U1 V/ n4 x- p' k                _PushButtonDelete->SetSensitivity(CATDlgEnable);4 h8 m# Y4 x9 L4 H) e" O
       _PushButtonExport->SetSensitivity(CATDlgEnable);
0 U% V' i' c, [* X( ?' y7 T( v        }% _0 T) _6 B* h+ k" S7 `
}9 r. m4 g% ~6 w% [! ]
[/mw_shl_code]
& d$ K$ @' T8 ~) s6 P& G
上海点团信息科技有限公司,承接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

接下来时删除按钮,删除可以选中的列进行删除操作# @& D% |' f  T
[mw_shl_code=c,true]' k/ |% \' y! V. n# B+ Q8 u
//-------------------------------------------------------------------------
  ~1 m9 E/ d8 [4 S- N) @// Callback on PushBActivate of _PushButtonDelete
$ Y; o- p4 C; {% u8 q/ r& _//-------------------------------------------------------------------------
4 Y9 w+ J" R: F+ S/ h/ _% evoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data): u5 D) d) C" t" {4 i7 v
{; g9 Y% F& ^% \& I
  
9 U" [1 H. G/ {, Y) f        //删除选中行7 l' i2 t2 J8 I; [# G: X& F9 C$ q

+ y0 e) q1 u' |! w- t        CATBool RowIsSelected;4 M, f" F3 a. [% X- C
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
' j: h7 g* n" r) ~        {! I( K1 z; e4 F: r- d
                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行: U$ H: h( h! M$ l. ~
                if(RowIsSelected ==TRUE )
3 M! Z7 F1 \  S2 w% E+ [* Y                {
+ v7 x% m8 k. P                        _MultiListInfor->ClearLine(i);                                        //删除行
$ y2 i/ N! i$ o% h                }
* D( H* D) Z$ G6 k        }
2 N* S' G/ u% N7 C' n1 P& X, N6 m8 \* G. y4 ]; x

2 H8 w: Y. N- M2 {if(_MultiListInfor->GetLineCount() == 0)
' k9 L  t( ?5 C, M& _( m{
2 g' A2 C2 W) U) D' Z8 f4 |        _PushButtonDelete->SetSensitivity(CATDlgDisable);1 Z1 q( j7 }1 l& b, h6 {
        _PushButtonExport->SetSensitivity(CATDlgDisable);/ ^+ W3 b6 {+ E; V, x* v/ E
}
* l& G: u1 b/ P: D& D6 y9 D6 helse' e. ?1 `! f/ C$ S  u( i! q
{
8 J5 C& I' @2 X* U* {; a        _PushButtonDelete->SetSensitivity(CATDlgEnable);! _4 ~' b: u8 n* e- _# U6 ]
        _PushButtonExport->SetSensitivity(CATDlgEnable);
" l% I: N0 e; P}3 j" J1 A: s2 U
}+ Q7 C. j6 {+ c9 f% {- M) A% c
[/mw_shl_code]
- h% h5 A- L2 O, ^6 z: R: _7 K
3 C/ b1 C9 K: V$ M' I6 Q$ Q/ e  x0 N  W
9 T) f$ W8 r% H* F 1GIF.gif % t# j/ r3 N; w; F' c) h; k

" [4 R& q+ g% R) n' [/ F4 p
上海点团信息科技有限公司,承接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! t+ o1 S1 c) ?- g2 E& Y
  W* B' ^* z4 A' t/ F# f
8 J- `$ v+ q# O2 A! Q% t
[mw_shl_code=c,true]3 w' T7 X' ~5 f/ }4 Y" c5 W$ L. v: g
//-------------------------------------------------------------------------3 Q- T7 j, e( Y7 E
// Callback on PushBActivate of _PushButtonExport. l0 X! s$ O1 J+ q# |) e
//-------------------------------------------------------------------------; T# ~. f4 D* G
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)7 n8 X) k$ c, S: z
{
3 m" R# y, ?2 K& [8 D/ R
; T! J  B5 _, W, D% j8 n* u( k9 i" ^        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框
; C* N0 |5 }. C$ h, U" x, _        pDlgFile->SetVisibility(CATDlgShow);        * h; R* D$ j4 e9 C6 [8 x* F
        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt
9 L, c9 j+ X4 [/ Z$ g: C! I! R& `: z        CATString filterExtension = CATString("*.txt");. E. y9 g. U% _/ y
        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);1 {' X6 \% X  o
        //getCurrentTime
9 [0 P, Q! |  m5 B: h        CATUnicodeString myTimeStr;
5 b% Q  N9 i- U% i& ]2 V+ ]- |        CATTime myTime = CATTime::GetCurrentLocalTime();* z2 _; x6 x/ E* l6 f
        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");: x, x, _0 |2 Y# o" p- i

' f% t. c  H/ v3 G% y        //fileName' L: G/ |1 _! G8 W& o
        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;
/ h- [5 y9 e$ M: c1 r, B; t( @        PrintMessage(fileNameStr);7 h9 J+ w' \& d7 P  e) Z
        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
5 {# T+ Y/ \5 I) j- Q% {- G
7 L- s0 f9 w4 f, r& u/ i  ^$ h% j
        int iTypeOfInput = 0;! v5 S' E; l6 n! V+ t& o
        //添加文件选择框确定按钮事件回调函数 ActOnOK  s# r% J* N7 J9 @9 Z$ M
        AddAnalyseNotificationCB (pDlgFile, - i0 f6 J, Y" X6 m$ V2 }3 A% }
                pDlgFile->GetDiaOKNotification(),. v) b, L' @1 |' g. O+ y! z0 `7 Y
                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,' Z6 r2 X( A* ~6 G
                &iTypeOfInput);, w# ?6 c2 _' A9 Z* o- Q( m8 N3 {* I
1 d7 Z0 V9 \8 m8 T0 l
}
/ O9 D" Q4 B9 C  ]; G/ b) e8 H( l! i3 j. h1 X3 v( u9 _
void PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
7 O9 S/ z- k: v3 d$ E' D{. C; e- }5 u& I5 H( h2 w
        CATUnicodeString fileName;
/ R: f: y( K1 M# l7 }0 V/ X        pDlgFile->GetSelection(fileName);//获取选择的路径- v/ S; m! @; q
) e; L' W+ B$ X8 _; |" a6 Z
        fileName=fileName+".txt";) b6 L$ h3 ]# I3 S  c; e
        const char *filepath=fileName.ConvertToChar();$ ?4 k+ k) \3 w. i! R+ A1 E
        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件
5 Z; \: i5 t6 [  N        if(!outfile)         
% ?8 z- T/ g" O8 q/ d0 O3 t1 W        {1 }8 P! r2 X" U% Y  @) _* r3 l# @
                PrintMessage("打开文件出错!");" R  E4 V5 b+ F4 u7 D
                return;6 D+ o# o4 r. @2 i
        }6 C1 n' N4 h' |3 Q
        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
9 Q/ S( r2 Z& R+ U        CATUnicodeString         name,gender,age,tel,time,subject;
2 k7 a. I0 S2 }4 f        int ColumnNum=_MultiListInfor->GetLineCount();: \# \& `9 D3 G8 d# H& {% U
        for(int i=0;i<ColumnNum;i++)3 A* P1 h; T0 u
        {
0 l/ N- D6 z- `1 _                //获取MultiListInformation中的信息3 f0 |: Q: d5 I" b1 D) _( c3 g7 f, `4 b
                _MultiListInfor->GetColumnItem(0, name,i);  I: W$ k% _. a
                _MultiListInfor->GetColumnItem(1, gender,i);
$ ~. [/ y$ e5 X) i                _MultiListInfor->GetColumnItem(2, age,i);
' x- z2 ]6 U( @- U                _MultiListInfor->GetColumnItem(3, tel,i);
& t' K; K1 p2 p, S3 m! [                _MultiListInfor->GetColumnItem(4, time,i);
$ n* E8 w' @- O6 `' T1 g" Q) u                _MultiListInfor->GetColumnItem(5, subject,i);
) `  ]: W4 p- b                //此处需要调整字符串的输出方式,使得txt格式整齐
/ e* S6 C7 ^5 n. M0 S                name.Resize(6,' ',0);9 y8 u& I; R) z5 X) n+ Q
                gender.Resize(4,' ',0);% c! N( c7 t$ d% x+ w2 m' N
                age.Resize(4,' ',0);
8 c/ R9 p& D# T' O                tel.Resize(11,' ',0);
7 V% H& l% e$ H$ p; x8 A% _                time.Resize(4,' ',0);
6 P( E5 M( J. n/ ^! {' R                subject.Resize(22,' ',0);
# c! h( ]0 `: Z6 S6 Q                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;' g' @$ @4 s1 f9 v" l) {
        }
5 \) o' |, P" c* Q) |7 N0 _0 Y        pDlgFile->RequestDelayedDestruction();
1 n% a# h* K: X9 N" c$ C- x. q        pDlgFile=NULL;
5 M9 {( L; {/ |* G}[/mw_shl_code]
9 T. m# g& \- Q0 z2 w. c- a* C$ X; z
3 G# {; i4 f" N9 C+ o! r1 h2 V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了