V5-界面控件的显示与隐藏

2018-08-28  本文已影响0人  游在路上的鱼

和何创建动态的界面:
使用动态的框架(dynamic frames):当框架消失或出现时,界面的尺寸将会被重新定义
为实现上述要求,Frame的定位方式应当为tabulation layout而不是grid layout 。
一般来说,有以下几种形式的动态界面:
1.More/Less Push Button Demonstrator


image.png

左侧的界面部分是一直可见的,并始终绑定在0号垂直线(用户设定)。
less时右侧的界面是分离的、不可见的,more时界面被扩展,扩展部分绑定在10垂直线(非0即可)上。
(1)当将

_pFrameLeftMore -> SetGridConstraints(0, 0, 1, 1, 0);
_pFrameRightMore -> SetGridConstraints(0, 1, 1, 1);

注释掉


image.png

(2)放开上述两行的注释:


image.png

(3)将_pFrameRightMore分离后设定隐藏

ResetAttachment(_pFrameRightMore);
_pFrameRightMore->SetVisibility(CATDlgHide);
image.png

在创建对话框时注意对话框的属性设定:

TSTMoreLessDialog::TSTMoreLessDialog() :
  CATDlgDialog ((CATApplicationFrame::GetApplicationFrame())->GetMainWindow(),
//CAA2 WIZARD CONSTRUCTOR DECLARATION SECTION
"TSTMoreLessDialog",CATDlgWndAutoResize | CATDlgWndBtnOKCancelPreview |CATDlgWndNoResize

否则将出现重叠的错误!!!
2.The "More & Radio Button Demonstrator" Dialog box


image.png

3.The "Frame Replacement Demonstrator" Dialog box


image.png
仅仅修改对话框的类型:修改为CATDlgWndAutoResize | CATDlgWndBtnOKCancelPreview |CATDlgWndNoResize
未定义各个Frame的水平定位线时,出现上述错误!
image.png
SetHorizontalAttachment(1,CATDlgTopOrLeft,_Frame001,NULL);
SetHorizontalAttachment(2,CATDlgTopOrLeft,_Frame012,NULL);
SetHorizontalAttachment(3,CATDlgTopOrLeft,_Frame023,NULL);
image.png

void TSTFrameReplaceDialog::Build()中,如下代码:

ResetAttachment(_Frame024);
_Frame024->SetVisibility(CATDlgHide);
SetHorizontalAttachment(3,CATDlgTopOrLeft,_Frame027,NULL);
_Frame021->SetVisibility(CATDlgShow);

会出现以下问题!


image.png

去除后,消除上述问题!

CATIA中无法进行Frame中单个控件的显示隐藏,只能进行整个Frame的显示隐藏。
对于项目中出现的存在Frame嵌套的界面布局,采用设定多重frame,点击Frame中的选择控件之后,将整个Frame替换。

为了保证界面的美观性,在构造界面时不仅要定义水平定位线,还要定义垂直定位线:

_pSketchSettingFrame = new CATDlgFrame(this, "pSketchSettingFrame", CATDlgGridLayout);
    SetHorizontalAttachment(HORIZONTAL_1,CATDlgTopOrLeft,_pSketchSettingFrame,NULL);
    SetVerticalAttachment(VERTICAL_1,CATDlgTopOrLeft,_pSketchSettingFrame,NULL);
    SetVerticalAttachment(VERTICAL_2,CATDlgRightOrBottomRelative,_pSketchSettingFrame,NULL);

在动态变换的对应函数中添加:

SetHorizontalAttachment(HORIZONTAL_4,CATDlgTopOrLeft,_pProjectPntFrame,NULL);
SetVerticalAttachment(VERTICAL_2,CATDlgRightOrBottomRelative,_pProjectPntFrame,NULL);

此处不要定义左侧定位线,否则会造成界面混乱。

上一篇下一篇

猜你喜欢

热点阅读