2024年3月7日发(作者:)
中Panel控件设计技巧
电脑编程技巧与维护
中Panel控件设计技巧
张艳平,王香玲,陈震
(丹东东发(集团)股份有限公司,丹东118003)
摘要:主要介绍用中用实现类似里面工具箱的菜单,并附加了代码.
关键词:;Panel控件
ZHANGYI唧她,WANG】【i衄ing,CHEN肌
(DandongDongfaGroupCO.,LTD.,Dandong118003)
Abstract:idetoolbox,andadditional
code.
Keywords:;PanelControl
Panel控件可对控件进行分组以及组织移动网
页的内容.将控件组织在面板中,可提供有关在运行时控件
应如何分页的信息.应用程序会尽可能将一个面板中的所有
控件分页到同一屏幕上.通过将控件分组到Panel控件中,应
用程序还可使用单个命令隐藏或显示一组控件.
Panel控件必须放在Form控件中,另一Panel控件中或
控件模板中.所有其他控件(除StyleSheet控件,DeviceSpe—
cific控件和Form控件以外)必须放在Form或Panel控件中.
除了可包含其他控件外,面板还可包含文本,这些文本环绕
在面板中的其他控件周围.通过设置ForeColor属性指定文本
颜色,使用Bold和Italic属性设置文本格式.因为面板中的
控件会继承面板的样式,所以使用Panel控件非常适合将样式
应用于一组控件.
应用程序可为特定设备自定义Panel控件的外观.将De—
viceSpecific控件附加到面板,Panel控件就能够使用设备筛选
器.设备筛选器使应用程序可以使用属性重写值和控件模板.
1功能
Panel控件用于为其他控件提供可识别的分组.开发Win—
dows应用程序时,通常使用Panel控件按功能细分窗体.在窗
体设计时,所有控件都可以自由移动,而当移动Panel控件
时,它包含的所有控件也将随着移动.
2属性
Panel控件常用属性及说明如表1所示.
表1Panel控件常用属性及说明
属性说明
AutoScroll此属性指示当控件内容大于它的可见区域时
是否自动显示滚动条
BackColor此属性获取或设置控件的背景色
Backgroundlmage此属性获取或设置在控件中显示的背景图像
BorderStyle此属性指示控件的边框样式
本文收稿日期:2010—02—15
—
44—
3方法
(1)ToString方法
该方法用于返回此控件的字符串表示形式.
(2)Show方法
该方法主要用于向用户显示控件.
4代码
实现类似里面工具箱的菜单的方法的界面设计及
代码.在Form1在窗体加入一个ImageList(其中Name=Im—
ageListl,Images中加入""和"''),
一
个Panel控件(其中Name=Panel4),在Panel4控件上加入3
个panel控件(name的属性分别为Panel1,Panel2,Panel3,
Dock的属性为Top,这一点很重要),在Panel1控件上加入3
个linklabel控件(name分别为Linklabel,Linklabe2,Lin—
klabe3,text的属性分别为New,Open,Close),一个Button
控件,一个Caption控件(Text的属性为File)在Panel2控件
上加入3个Linklabel控件(Name分别为Linklabe4,Lin—
klabe5,Linklabe6,text的属性分别为Play,Pause,Stop),一
个Button控件,一个Caption控件(text的属性为edit),在
Panel3控件上加入一个Linklabel控件(Name为Linklabe7,
Text的属性为Help),一个Button控件,一个Caption控件
(Text的属性为Help),Paint事件实现渐变效果,Button事件
实现卷起或展开效果,具体代码如下:
变量定义:
DimPanellExpandedAsBoolean=True
DimPanellHeightAsDecimal
DimPanel2ExpandedAsBoolean=True
DimPanel2HeightAsDecimal
DimPanel3ExpandedAsBoolean=True
DimPanel3HeightAsDecimal
DimOutlineWidthAsInteger:l
DimOutlinePenAsNewPen(lue,Out-
lineWidth)
S0FrWAREDEVELOPMENTANDDESIGN软件开发与设计
DimFirstGradientColorAsColor=
DimSecondGradientColorAsColor=e
PrivateSubForml_Load(,
rgs)
PanellHeight=
Panel2Height=
Panel3Height=
EndSub
PrivateSubPanell—
Paint(—
ject,ventArgs)
DimBorderRectAsNewRectangle(0,0,
一
1,一1)
ctangle(OutlinePen,BorderRect)
e0
EndSub
PrivateSubCaptionl_Paint(ByValsenderAsSystem.
ven—
tArgs)
-
GradientBrush(NewRectangle(0,0,,
),FirstGradientColor,SecondGradientColor,
al,False)
ctangle(Grad,NewRectangle(1,0,
一1,一1))
DimBorderRectAsNewRectangle(0,0,1
一
l,一1)
ctangle(OutlinePen,BorderRect)
e()
EndSub
PrivateSubButtonl_Click(ByValsenderAsSystem.
Object,rgs)HandlesButton1.
Click
IfPanellExpanded=TreeThen
PanellExpanded=False
=(1)
=
Else
PanellExpanded=True
=(0)
=PanellHeight
EndIf
EndSub
PrivateSubPanel2_
_
ject,ventArgs)
DimBorderRectAsNewRectangle(0,0,
一
1,—1)
ctangle(OutlinePen,BorderRect)
e0
EndSub
PrivateSubCaption2_Paint(ByValsenderAsSystem.
.蹦ntEven-
tArgs)
-
GradientBrush(NewRectangle(0,0,,
),FirstGradlentColor,SecondGradientColor,
al,False)
ctangle(Grad,NewRectangle(1,0,
一1,—1))
DimBorderRectAsNewRectangle(0,0,
一
1,一1)
ctangle(OutlinePen,BorderRect)
EndSub
PrivateSubPanel3_Paint(—
ject,ventArgs)
HandlesPanel3.P缸nt
DimBorderRectAsNewRectangle(0,0,
一
1,—1)
ctangle(OutlinePen,BorderRect)
e()
EndSub
PrivateSubCapfion3_Paint(ByValsenderAsSystem.
tArgs)
Ven—
-
GradientBrush(NewRectangle(0,0,,
),FirstGradientColor,
al,False)
ctangle(Grad,NewRectangle(1,0,
一1,—1))
DimBorderRectAsNewRectangle(0,0,
一
1,—1)
ctangle(OutlinePen,BorderRect)
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.
0bject,rgs)HandlesBu~on3.
Click
IfPanel2Expanded=TrueThen
Panel2Expanded=False
=(1)
=
E1se
Panel2Expanded=True
=(0)
=Panel2Height
EndIf
EndSub
PrivateSubButton2_
Click_l(ByValsenderAsSystem.
Objec~rgs)HandlesButton2.
Click
IfPanel3Expanded=TrueThen
Panel3Expanded=False
=(1)
=
Else
Panel3Expanded=True
=(0)
=Panel3Height
EndIf
EndSub
5运行效果
如图1所示.
一
45—
电脑编程技巧与维护
图1
6结语
主要强调Panel控件的dock属性设置和Button按钮Click
事件,代码简单,实现的界面效果非常漂亮.
参考文献
…1苏国彬.程序设计教程【M】.机械工业出
版社,2002.
[2】德特(Deitel,H_M.)(美).程序设计专家
指南【M】.机械工业出版社,2002.
[3】技术内幕.北京:电子工
业出版社,2002.
[4】-MadeXPPanel/
KB/vb/,2006.
作者简介
张艳平,女(1973一),工程师,学士学位,主要从事数据库编
程方面的工作.
王香玲,高级工程师,学士学位.
陈震,工程师/学士学位.
(上接第l6页)
定义,具体做法是在stdafx.h里,加入下面两行:#import"
Tpascal_
"raw_
interfaces_
onlyusingnamespaceTpascal;
(2)为工程对话框添加实现代码
在对话框按钮消息响应函数中编写调用组件代码:void
CTestDlg::OnCreatebutton0{//TODO:Addyourcontrol
notificationhandlercodehereUpdateData(TRUE);CoInitialize
(NULL);,/初始化COM儒到COM对象的CLSIDCLSID
clsid;HRESULThr;hr=CLSIDFromProglD(OLESTR("
lclass.1_
0"),&clsid);Ⅱ建一个COM对象的
实例ITpascalclass*plpascal;hr=CoCreateInstance(clsid,
NULL,CLSCTX_
INPROC—
SERVER,uuidof(ITpascalclass),
(LPVOID)&pIpasca1);if(FAILED(hO)试创建是否成
功{AfxMessageBox("createfailed");return;)始化
VARIANT变量VARIANTsize,out;Variantlnitf&size);
Variantlnit(&ou0;/4建size,类型为VT-_R8,即double型
=vT_R8;=fdouble)m_size;//仓IJ建二维数组
out,类型为VT-ARRAY,ARRAY中的元素为double型out.
vt=Ⅵ_ARRAYIR8;SAFEARRAYBOUNDbound【2】;假
置第一维数组元素个数,元素索引下界bound【0】.cElements=
msize;bound【01.1Lbound=0;/,设置第二维数组元素个数,
元素索引下界boundf1】.cElements=re_size;bound【1】.1L-
bound=0;=SafeArrayCreate(VT—R8,2,bound);
pIpascal一>mypascal(1,&out,size);//函数调用,/返回值传递
double*matrix,pDest;matrix=newdouble【m_sizem_size】;
SafeArrayAccessData(,(void**)&pDest);//获得数
据指针,访问数据memcpy(matrix,pDest,m_size*msize*
sizeof(double));//拷贝数据矩阵SafeArrayUnaccessData(out.
parray);//释放数据指针,取消访问SafeArrayDestroy(卜
ray);//释放数组,,结果数据显示的代码与上例一样,此处省
略……delete口matrix;//释放指针plpascal一>ReleaseO;if
(plpascalI=NULL)fp|pascal=NULL;JVariantClear
——
46——
(&size);//清空变量VariantClear(&ou0;CoUninitialize0;//
释放COMl在vc中编译,运行结果与上例一样,也与在
MATLAB中运行M文件的结果一致.
(3)独立程序的发布
采用COM组件的方法的独立程序的发布,除了需要在目
标计算机上运行打包组件产生的可执行文件,安装
,并注册Tpascal_以外.还需要将MFC
工程的可执行文件.exe拷贝到目标计算机上运行即可实现独立
程序的发布.
4结语
在软件开发过程中,为了提高软件的开发效率,混合编程
是综合使用多种开发工具技术优势的一种常用手段.在此采用
基于MCC和COM组件的VC与Maflab混合编程技术,具有实
现简单,执行效率高,几乎支持所有的Maflab函数,易于移
植等优点,是解决矩阵处理,计算以及图像处理编程的一种有
效途径,可以为科学研究和工程技术提供更强的技术支持.所
有代码在环境为WindowsXP,Matlab7.0.1,VC6.0下均调试
通过.
参考文献
[1]1苏金明.MATLAB高级编程[M】.北京:电子工业出版
社,2005:215—220.
[2】董维国.深入浅出MATLAB7.x混合编程[M】.北京:机
械工业出版社,2006:278—285.
[3]张威.MATLAB应用程序集成与发布[M】.西安:西安电
子科技大学出版社.2005:186—198.
作者简介
刘蓉,女(1968一),讲师,本科,从事多年的计算机应用教
学工作和信息管理工作.


发布评论