PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

  [复制链接]

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

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

admin 楼主

2017-12-30 22:46:34

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

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

x
CATIA二次开发入门教程28-PLM之家注册系统学习开发之MultiList2 i' L, @5 d% x9 q  V: G
此控件的功能是将前面的信息通过列表的形式展示出来,最重要的是对信息的判断的同时,对删除和导出button的可用性进行处理,点击添加信息按钮,结果如下,如果发现重名或者信息不符合会进行报错!1 t6 r2 L- A+ y; C- _. V' [
% _* Z% l  T' G1 U+ g- f# H
QQ截图20171230224401.png
) y2 C" X; K1 ~: I3 e* \8 @  `/ F0 K* b0 V0 k& ?* Q+ G# v
2 z! j7 ~* R% m! Y: a
[mw_shl_code=c,true]//-------------------------------------------------------------------------  D- j0 ?, \, Z  p$ t
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonAddInfoPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
5 v5 ^9 W9 L) u6 X+ g/ _2 E{! @( z* y6 i/ v
    //Add information
* S( f/ w. U$ t9 m* o
3 }- L0 b- w; ?% o: V; Z6 Q        CATUnicodeString oCellContents[25];# f$ r. ]( }/ S
        ////////////////判断是否所有的信息都填写  ~$ f; o- o4 T3 w4 a# C# Y
        if(_EditorName->GetText()=="")% D7 B2 W6 R3 ?
        {( K6 I1 d- q0 a$ Z
                PrintMessage("请完善用户名信息!");
3 s0 a: H: B% w$ z6 s1 \. z9 V                return;$ }7 k7 Z& t+ p5 A& }: u* [
        }
3 _. n7 A" m1 m: U3 d! k7 V         if(_RadioButtonMale->GetState()!=CATDlgCheck && _RadioButtonFemale->GetState()!=CATDlgCheck)
8 q; N; |* ^9 I& i! Z/ _+ }        {
6 M; ^" U* K! d                PrintMessage("请完善性别信息!");
2 {4 y4 H. Z( K# b' d                return;, [! ?9 L# d9 Y. _
        }
* q) |7 c0 k' o         if(_CheckButtonCAA->GetState() != CATDlgCheck && _CheckButtonNXOpen ->GetState()!= CATDlgCheck && _CheckButtonTC->GetState()!=CATDlgCheck)
9 Q( r0 H2 r/ N; P        {
: `0 `- F4 y  t4 n% |/ ]9 ?) J( Q- K        / {  n( K% \5 n$ F
                PrintMessage("请完善科目信息!");
# B7 q8 E: F. m% v, W  }& X0 e                return;
7 c- B$ @7 Z& D6 l        }
4 E7 ^7 r! W" T1 d         if( _EditorTel->GetText().GetLengthInChar() != 11)
8 T1 v! S6 v  U, S0 [5 A6 o        {
2 T( `& `+ \4 T. S# B                0 w, Z; W$ p& f
                PrintMessage("请完善电话信息!");7 h& n9 k7 S* e5 I- Z- D
                return;; N& E: v1 A9 n  y# m; |
        }
6 Z: W8 c4 V+ u9 t0 Y/ `        //////////////判断是否有相同的名字已经添加在MultList中# F: c& M: \3 L2 r7 o3 R, {, C" a7 j
         bool isIn = false;. h# O" b8 q+ K" C" M
        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
3 d! _( B4 a9 x/ M  S        {       
; z2 {$ h  K2 o4 X                _MultiListInfor->GetColumnItem(0, oCellContents,i);! d9 `# t( {$ m9 l7 c5 K: ~
                if(oCellContents==_EditorName->GetText())  Q) @7 {6 E+ o+ ]8 c7 ~
                {
% o2 h7 A( U; {, P0 u7 R- k                        PrintMessage("同名存在,请重新输入!");
" g+ H. e# Q3 E+ T) z/ F                        isIn = true;, R, d% w+ r' N; t
                        break;
" J4 Q& O9 \. h+ ]$ ~                }) g' |/ u, S/ m: D
        }
$ z3 d8 e/ e* {# E$ M- L: r% ]5 b  y  v! o' B8 x% N$ I, J
          if (isIn): _7 r9 @/ P8 ^7 r* {( C, D4 i
          {0 _- {. C/ i# c! D
                  return;# f+ X6 L6 m4 q
          }
3 s5 r4 P; P/ Q- |7 ?3 r          else        + [1 ?" N" e  v- P: x( b7 i7 E9 E
          {
+ ^! e. ^) g. w4 a* i                ///////////将收集到要添加的信息放在ColumnTitles[6]中,
2 g, n; N4 T  [                CATUnicodeString ColumnTitles[6];* n5 [' |4 r$ k& I% z
                //收集姓名信息
2 @7 G, z* s# s0 ~) D                ColumnTitles[0]=_EditorName->GetText();                               
2 l! q9 [6 E0 h. V/ u2 [          //收集性别信息  c) K& S" Q6 g( V
                if(_RadioButtonMale->GetState()==CATDlgCheck)                //收集性别信息
# T6 A$ |. F. l) a! n; W                        ColumnTitles[1]="男";: p4 S) I( B6 {  i% |3 l$ ]5 {; Q
                else if(_RadioButtonFemale->GetState()==CATDlgCheck)# I* M8 W: E4 S. f5 a6 c, ?
                        ColumnTitles[1]="女";
3 S: T# Q6 J) X! ]  Y          //获取年龄
) y2 q, ^1 i. \                CATUnicodeString iAgeText;, F! v# S# o/ C: a3 s: A
                  _ComboAge->GetLine(iAgeText,_ComboAge->GetSelect());
- M3 A( f/ n$ L1 F0 F9 h                 ColumnTitles[2] =iAgeText;
2 W  G7 M9 J: c# ^$ r" H) V                 //获取电话- L4 m; b$ x( ^) N5 f* ]- P# U) S
                 ColumnTitles[3] =  _EditorTel->GetText();
9 C4 y, A4 K( R" l* L, A+ b                 //获取时长
. a( T3 C# }  p4 N& H0 ^                 char msg[256];: _& `% N: ~, Q# Z: `
                 int tempInt = (int)(_SpinnerTime->GetCurrentValue());" ?4 |) E3 }. G
                 itoa(tempInt,msg,10);
: K$ P* r2 }# m                CATUnicodeString iTimeText = CATUnicodeString(msg);
# ], e& I' Y  s' x. m                 ColumnTitles[4] = iTimeText;
0 |( @; ^9 H* q* L' |! f4 o         //收集学科信息# t# X0 v) c$ {- d$ ?, @8 v
        CATUnicodeString iText;                       
5 b% U9 Q9 |, G  }+ [                 if (_CheckButtonCAA->GetState() == CATDlgCheck)
$ k& t, A) `( v- Z                 {9 }4 Q" i7 t+ h9 A7 x
                        iText += _CheckButtonCAA->GetTitle();
/ V* J, T" L# R3 g' u                 }
+ w5 m) W) C1 I8 N
  w3 A3 ^# f% h, G. x( j& r% N                 if (_CheckButtonNXOpen->GetState() == CATDlgCheck)
0 e- v3 D5 _) y9 j1 C9 ?/ g                 {
5 m. V4 L# E# t# x8 t4 N. J& a                        iText +=  _CheckButtonNXOpen->GetTitle();, b8 c0 {* S8 ~6 m: c2 L3 g
                 }* ^# d. K: f9 G$ G( A4 d% I* B

4 C' _# C" Y0 i                 if (_CheckButtonTC->GetState() == CATDlgCheck)5 z& A. ^3 _: @
                 {
: Q& y% P1 _' Y1 R6 G                        iText += _CheckButtonTC->GetTitle();! j9 A8 v( u, |4 I8 x/ V' z. N5 y
                 }+ _5 w& q) p+ p  f5 ^0 V- {

8 F7 [; G# u: b# G4 {
6 I4 O6 Y7 ^9 C6 L  W! B                ColumnTitles[5] = iText;
: h/ K+ E. i$ ?$ ?/ V9 `2 ^
# d# Z( y( T5 t( o, a: {                ///////////在MultiLIst中添加信息用到的函数是SetColumnItems
  ]. q* ?! p4 H6 ?4 N  @                _MultiListInfor ->SetColumnItems(0,&ColumnTitles[0],1,-1,CATDlgDataAdd);
3 d; o9 D  c! v: B) e$ Z$ X) x                _MultiListInfor ->SetColumnItems(1,&ColumnTitles[1],1,-1,CATDlgDataAdd);& e1 s' S# l! @4 s" [
                _MultiListInfor ->SetColumnItems(2,&ColumnTitles[2],1,-1,CATDlgDataAdd);
6 g. g& ?: {) v5 F( Y+ d                _MultiListInfor ->SetColumnItems(3,&ColumnTitles[3],1,-1,CATDlgDataAdd);0 s+ s+ F: `9 M
                _MultiListInfor ->SetColumnItems(4,&ColumnTitles[4],1,-1,CATDlgDataAdd);
: m7 ^7 w) ~: |                _MultiListInfor ->SetColumnItems(5,&ColumnTitles[5],1,-1,CATDlgDataAdd);
: [0 F$ x- _6 A& H
+ a- L1 F% X7 z: c                _PushButtonDelete->SetSensitivity(CATDlgEnable);2 |4 f, m8 V' Y
       _PushButtonExport->SetSensitivity(CATDlgEnable);
2 J3 u$ Z1 ]# M8 @0 {4 x        }
  L' ~  h9 d* K  e4 m! q3 T* q4 ?3 z}
; b4 n/ w" V* u3 M[/mw_shl_code]
7 c! W8 f$ J, j8 s7 l* k9 c  |
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复5

admin 发表于 2017-12-30 22:51:37

admin 沙发

2017-12-30 22:51:37

接下来时删除按钮,删除可以选中的列进行删除操作5 E1 n4 E- \2 U
[mw_shl_code=c,true]
+ k% P1 D2 K( H7 ~$ X- R//-------------------------------------------------------------------------  f+ C. D, A: _/ N
// Callback on PushBActivate of _PushButtonDelete) w! ]" K$ j. f$ M
//-------------------------------------------------------------------------. G8 z" j( K( H, v  ^# H, t
void PLMHomeRegeditFunctionCmdDlg::OnPushButtonDeletePushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)$ ~+ c! N' R, X2 ?( o' M+ b; K
{2 \. j8 g, k. y' r1 W4 \( ^9 _7 r
  8 V6 r9 g# C1 _0 N
        //删除选中行* {3 M9 W+ E' X1 L

  b9 s  M% y# [% l. t& n4 d& M! [7 \        CATBool RowIsSelected;
( X, E3 R* @3 Y' E) Z# f! l3 P        for(int i=0;i<_MultiListInfor->GetLineCount();i++)
+ R- m3 `  E' K( C. h: H7 F        {
( A5 M  N8 Y4 g( x1 G/ f                RowIsSelected = _MultiListInfor->IsSelect(i);                        //找到那个被选中的行
# \' E! G- ]- U' O2 A                if(RowIsSelected ==TRUE )
* ^* X8 u& d/ U: G                {
7 t+ }; @; f8 T2 V0 S                        _MultiListInfor->ClearLine(i);                                        //删除行6 x! r( N5 Q, l1 d& m
                }* m( @5 R# {* [
        }
/ @! Q) O+ R7 S& z# Q, |/ Y4 r9 u6 o/ m8 \. L: z& p, }5 ^
" m1 r+ R( w" v
if(_MultiListInfor->GetLineCount() == 0)
6 `5 U8 i% j$ H4 [{: U# I$ D' @' d# u1 E& N- ^
        _PushButtonDelete->SetSensitivity(CATDlgDisable);4 i1 i& q6 N# d% E! o
        _PushButtonExport->SetSensitivity(CATDlgDisable);- u/ f, H* K$ |3 U7 I4 r
}
* |! P6 \6 E8 B  n( relse
/ @7 b# ^' }2 r9 I  ~( D{
4 O# d: U9 I4 e5 L        _PushButtonDelete->SetSensitivity(CATDlgEnable);
9 z1 r, z/ V1 A. j' U8 W8 L        _PushButtonExport->SetSensitivity(CATDlgEnable);# A$ A- D4 O5 ?# J) D( L% S
}
4 H* }9 M( _6 X2 b* S+ e}
0 d7 Q# U0 `( F; ^$ N[/mw_shl_code]+ O$ ^: ?0 n( [. N6 G) k( y
. ~9 O6 [- h: V) a; j+ s1 A) C) U
& ]+ w, c0 s' T% B8 g
1GIF.gif 5 i$ a8 `7 c4 B  R- J9 {
: D/ A# w3 m, R( _% f0 k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2017-12-30 22:53:15

admin 板凳

2017-12-30 22:53:15

最后是导出功能,此处使用CATFileDlg 弹出对话框导出txt格式,此对话框点击ok后需要调用自己定义的回掉函数处理! QQ截图20171230225154.png
% N" o9 M: h+ \
8 z4 q) r: t+ J( ~  M* |
8 e3 m! [0 S3 g8 B0 ?" Z[mw_shl_code=c,true]+ j$ G. q7 f! N9 E& [
//-------------------------------------------------------------------------4 @$ [+ H: L  d" n, l! B
// Callback on PushBActivate of _PushButtonExport
; n* `" s# z$ t4 }0 R//-------------------------------------------------------------------------
# {5 b/ K; }, Z% b' T1 rvoid PLMHomeRegeditFunctionCmdDlg::OnPushButtonExportPushBActivateNotification(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)
6 u7 \8 `% {* _: ]0 k+ n6 @' _{
1 M* Z7 G5 [: S; E. y % j7 ^2 C& b) V) @% r! t
        pDlgFile = new CATDlgFile(this,"导出文件",CATDlgFileSave);//弹出文件选择框
- `; N% H! L; V' l: L        pDlgFile->SetVisibility(CATDlgShow);        + G: b/ j2 |9 W! S5 W; `  W
        CATUnicodeString nameExtension = CATUnicodeString("txt files");//设置文件格式为txt9 u6 b* ?9 D, I/ e. t
        CATString filterExtension = CATString("*.txt");* i: Z; j4 G# n
        pDlgFile->SetFilterStrings(&nameExtension, &filterExtension, 1);
) E4 k5 M0 I: v* a2 L        //getCurrentTime' K4 Q) }! Q1 l0 o/ C
        CATUnicodeString myTimeStr;
9 i! i$ X1 K' n. [6 s        CATTime myTime = CATTime::GetCurrentLocalTime();2 Q0 F$ K, c6 o; B2 ~
        myTimeStr = myTime.ConvertToString("%Y%m%d%I%M%S");% g8 \' R' O, I4 P2 W- m
) J4 X" C& }; f
        //fileName
8 E! u) c( E% j& {& O* r        CATUnicodeString fileNameStr = "LM之家培训导出信息表_" + myTimeStr;; c$ u& N0 E3 y# d  M! M
        PrintMessage(fileNameStr);
4 h# C/ O4 n1 Q* q, _        pDlgFile->SetFileName( fileNameStr);//设置文件默认名称为信息记录
4 e9 @3 S" n6 \( m1 W( {" ]! _5 R6 }4 P8 S9 p: F
2 ]) ^' k5 o3 x
        int iTypeOfInput = 0;/ ~9 C) y5 t' K% V& c( r: ?
        //添加文件选择框确定按钮事件回调函数 ActOnOK
( ?7 G0 S1 {4 k6 z        AddAnalyseNotificationCB (pDlgFile, : z6 K8 B* P/ z- Q, _
                pDlgFile->GetDiaOKNotification(),& F' H* U2 g+ P, L/ P5 D
                (CATCommandMethod)&LMHomeRegeditFunctionCmdDlg::ActOnOK,
; Y# n/ ]  \' u8 s, i/ R3 B. u# X                &iTypeOfInput);
  S2 |" C" o8 T# [
& {, L- Z. h% ], H  P1 `8 p8 F% o! r}2 T0 Y7 Z- B& A6 D

5 y$ d1 g" b* {9 V- O# o4 i3 t% n. ovoid PLMHomeRegeditFunctionCmdDlg::ActOnOK(CATCommand* cmd, CATNotification* evt, CATCommandClientData data)1 t2 r6 \- {( {9 G
{: p* x: L5 ?2 z
        CATUnicodeString fileName;
7 Y9 S) Y3 ^/ U! L3 O; Q7 s9 t        pDlgFile->GetSelection(fileName);//获取选择的路径
4 v8 G& u0 T! W3 Q$ z" l# j7 l$ ~' ?9 P/ G- M9 w5 v: j% d0 ~) P
        fileName=fileName+".txt";
7 P6 J$ a( E! f7 ?        const char *filepath=fileName.ConvertToChar();9 n3 f% c3 K) P2 t1 k" g/ ]
        ofstream outfile(filepath,ios:ut|ios::trunc);//用c++的输出文件$ ~1 ]; `, ~( Q' `" V; W
        if(!outfile)         ! m( c2 K4 ]/ ~% {2 V; e" D+ w+ U
        {8 Y% |$ l: \0 w+ n0 U
                PrintMessage("打开文件出错!");
4 r, e* r% ^# W- g( \                return;4 V4 i7 s6 J! g* t3 \% Q7 V
        }1 z9 K( O; l- N
        outfile<<"姓名  "<<"性别  "<<"年龄  "<<"电话  "<<"时长  "<<"学习科目          "<<endl;
9 Z5 |4 U, U+ `& B2 L        CATUnicodeString         name,gender,age,tel,time,subject;! v8 R  X/ X, I3 G, e! ~* @0 ?
        int ColumnNum=_MultiListInfor->GetLineCount();
7 {" K9 `8 E( q8 @) @        for(int i=0;i<ColumnNum;i++)( V+ b6 Q# \; V) F5 n8 K  f+ u( ?8 w8 v
        {
% q4 k! K$ U- H$ J/ W                //获取MultiListInformation中的信息
, W* q$ }7 F3 L$ B& E, K, U& l                _MultiListInfor->GetColumnItem(0, name,i);0 e; L+ r2 v& |
                _MultiListInfor->GetColumnItem(1, gender,i);! V8 a8 n  |; S: z# c% U* I; h% i
                _MultiListInfor->GetColumnItem(2, age,i);, X8 q+ N, v9 Z" B
                _MultiListInfor->GetColumnItem(3, tel,i);; ^$ r6 p/ E" B5 I' c, ]4 [
                _MultiListInfor->GetColumnItem(4, time,i);
8 i' c) H* ?( x; P* I$ B                _MultiListInfor->GetColumnItem(5, subject,i);/ i7 }/ z+ u# x# M& @; K, R
                //此处需要调整字符串的输出方式,使得txt格式整齐
/ p9 ^; N/ i9 r8 V                name.Resize(6,' ',0);# v, V* m. C6 Q+ i
                gender.Resize(4,' ',0);4 p- G/ [0 Q1 h* y; W
                age.Resize(4,' ',0);4 c# Y* T  z" M; `8 r! ~9 V) n' ?
                tel.Resize(11,' ',0);
3 s5 _6 X( d. k% n                time.Resize(4,' ',0);' z5 b6 e0 ?  o9 L! I& S, g
                subject.Resize(22,' ',0);
8 q( ?9 x, a7 O( A% ^                outfile<<name<<" "<<gender<<" "<<age<<" "<<tel<<" "<<time<<" "<<subject<<" "<<endl;
0 z8 Z8 _* h- J0 |# e        }
9 i8 [% H; p1 R! }        pDlgFile->RequestDelayedDestruction();; i0 j& t* `6 ]  }# R' [& i9 F
        pDlgFile=NULL;
! q/ X/ M3 }/ S/ ^}[/mw_shl_code]; g2 b" N+ m7 P" u" ]

: H. Y3 s9 y; `  l
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了