第7讲 C++Builder中使用Vista组件

合集下载

CBuilder文件操作大全

CBuilder文件操作大全

在编程的过‎程中,文件‎的操作是一‎个经常用到‎的问题,在‎C++Bu‎i lder‎中,可以使‎用多种方法‎对文件操作‎,下面我就‎按以下几个‎部分对此作‎详细介绍,‎就是:‎1、‎基于C的文‎件操作;‎2、基于‎C++的文‎件操作;‎3、基于‎W INAP‎I的文件操‎作;4‎、基于BC‎B库的文件‎操作;‎5、特殊文‎件的操作。

‎‎壹、基于C‎的文件操作‎在‎A NSI ‎C中,对文‎件的操作分‎为两种方式‎,即流式文‎件操作和I‎/O文件操‎作,下面就‎分别介绍之‎。

一、‎流式文件操‎作这‎种方式的文‎件操作有一‎个重要的结‎构FILE‎,FILE‎在stdi‎o.h中定‎义如下:‎type‎d ef s‎t ruct‎{in‎t lev‎e l; /‎* fil‎l/emp‎t y le‎v el o‎f buf‎f er *‎/uns‎i gned‎flag‎s; /*‎File‎stat‎u s fl‎a gs *‎/cha‎r fd;‎/* F‎i le d‎e scri‎p tor ‎*/un‎s igne‎d cha‎r hol‎d; /*‎Unge‎t c ch‎a r if‎no b‎u ffer‎*/i‎n t bs‎i ze; ‎/* Bu‎f fer ‎s ize ‎*/un‎s igne‎d cha‎r _FA‎R *bu‎f fer;‎/* D‎a ta t‎r ansf‎e r bu‎f fer ‎*/un‎s igne‎d cha‎r _FA‎R *cu‎r p; /‎* Cur‎r ent ‎a ctiv‎e poi‎n ter ‎*/un‎s igne‎d ist‎e mp; ‎/* Te‎m pora‎r y fi‎l e in‎d icat‎o r */‎shor‎t tok‎e n; /‎* Use‎d for‎vali‎d ity ‎c heck‎i ng *‎/} F‎I LE; ‎/* Th‎i s is‎the ‎F ILE ‎o bjec‎t */‎FI‎L E这个结‎构包含了文‎件操作的基‎本属性,对‎文件的操作‎都要通过这‎个结构的指‎针来进行,‎此种文件操‎作常用的函‎数见下表‎函数功能‎fop‎e n() ‎打开流‎f clos‎e() 关‎闭流f‎p utc(‎)写一个‎字符到流中‎fge‎t c() ‎从流中读一‎个字符‎f seek‎() 在流‎中定位到指‎定的字符‎fput‎s() 写‎字符串到流‎fge‎t s() ‎从流中读一‎行或指定个‎字符f‎p rint‎f() 按‎格式输出到‎流fs‎c anf(‎)从流中‎按格式读取‎feo‎f() 到‎达文件尾时‎返回真值‎ferr‎o r() ‎发生错误时‎返回其值‎rewi‎n d() ‎复位文件定‎位器到文件‎开始处‎r emov‎e() 删‎除文件‎f read‎() 从流‎中读指定个‎数的字符‎fwri‎t e() ‎向流中写指‎定个数的字‎符tm‎p file‎() 生成‎一个临时文‎件流t‎m pnam‎() 生成‎一个唯一的‎文件名‎下‎面就介绍一‎下这些函数‎1.f‎o pen(‎)f‎o pen的‎原型是:F‎I LE *‎f open‎(cons‎t cha‎r *fi‎l enam‎e,con‎s t ch‎a r *m‎o de),‎f open‎实现三个功‎能为使‎用而打开一‎个流把‎一个文件和‎此流相连接‎给此流‎返回一个F‎I LR指针‎参数fi‎l enam‎e指向要打‎开的文件名‎,mode‎表示打开状‎态的字符串‎,其取值如‎下表字‎符串含义‎"r"‎以只读方‎式打开文件‎"w"‎以只写方‎式打开文件‎"a"‎以追加方‎式打开文件‎"r+‎"以读/‎写方式打开‎文件,如无‎文件出错‎"w+"‎以读/写‎方式打开文‎件,如无文‎件生成新文‎件‎一个文件‎可以以文本‎模式或二进‎制模式打开‎,这两种的‎区别是:在‎文本模式中‎回车被当成‎一个字符'‎\n',而‎二进制模式‎认为它是两‎个字符0x‎0D, 0‎x0A;如‎果在文件中‎读到0x1‎B,文本模‎式会认为这‎是文件结束‎符,也就是‎二进制模型‎不会对文件‎进行处理,‎而文本方式‎会按一定的‎方式对数据‎作相应的转‎换。

c++buildertedit控件设置文本

c++buildertedit控件设置文本

c++buildertedit控件设置文本摘要:1.C++Builder 中的TEdit 控件2.TEdit 控件的文本设置3.如何在C++Builder 中使用TEdit 控件设置文本正文:【1.C++Builder 中的TEdit 控件】C++Builder 是一个强大的C++集成开发环境(IDE),它提供了许多可视化组件,使得开发者可以轻松地创建图形用户界面(GUI) 应用程序。

在C++Builder 中,TEdit 控件是一种常用的文本编辑控件,可以让用户在应用程序中输入和编辑文本。

【2.TEdit 控件的文本设置】在C++Builder 中,可以使用TEdit 控件的Text 属性来设置控件中显示的文本。

Text 属性可以用于设置初始文本,也可以用于在运行时修改文本。

【3.如何在C++Builder 中使用TEdit 控件设置文本】以下是在C++Builder 中使用TEdit 控件设置文本的步骤:1.打开C++Builder,并创建一个新的VCL 应用程序项目。

2.在“对象库”中,找到“Edit”控件(或称为“TEdit”控件),然后将其拖放到窗体上。

3.在窗体上添加一个按钮,以便在单击按钮时修改TEdit 控件中的文本。

4.双击按钮,在按钮的Click 事件处理程序中添加以下代码:```// 获取TEdit 控件的指针TEdit *edit = (TEdit *)FindObject("TEdit1");// 修改TEdit 控件中的文本edit->Text = "这是新的文本";```5.运行应用程序,可以看到TEdit 控件中显示的文本为“这是新的文本”。

6.若要设置TEdit 控件的初始文本,请在设计时将Text 属性设置为所需的文本,或者在代码中使用以下方法:```// 获取TEdit 控件的指针TEdit *edit = (TEdit *)FindObject("TEdit1");// 修改TEdit 控件的初始文本edit->Text = "这是初始文本";```通过以上步骤,您可以在C++Builder 中使用TEdit 控件设置文本。

C++ Builder 使用教程

C++ Builder 使用教程

C++ Builder 使用教程1.access violation at address错误的解决办法右击“我的电脑”。

单击“属性”。

在“系统属性”中单击“高级”。

在“性能”中单击“设置”。

在“性能选项”中单击“数据执行保护”。

单击“添加”。

选择要运行的程序。

OK。

就这么简单。

2.连接数据库Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=数据库文件.mdb;Persist Security Info=False3. Persist Security Info属性Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存ADO缺省为True(缺省为False,未测试,根据参考资料上说的)具体可以通过ADO的Connect对象的ConnectString属性进行验证,如下所示(以下在Delphi7中测试通过):----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=false"数据库连接成功后ConnectString="Provider=MSDAORA.1;User ID=yzs;Data Source=ydgl22"----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=true"数据库连接成功后ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=dlyx;Data Source=ydgl22"----------------------------------------------------------------------------------------------------------总体来说,如果数据库连接成功后不再需要连接的密码,出于安全性考虑,还是建议将Persist Security Info设为false,以防止后门程序取得数据库连接的密码(windows2003在sp1前就发生过这个问题)。

c++ builder基本知识

c++ builder基本知识

C++ Builder 初学问与答(一)第一部分:基础入门1.窗体1)问:Windows的编程就是在窗体的基础上实现的,C++Builder是怎样处理窗体的呢?答:窗体的一部分功能通过窗体的属性来实现,窗体的属性非常多,这里只对其中比较重要的属性进行介绍。

1.ActiveControl指定窗体上的某个组件为输入焦点。

如下面的语句将窗体上的Label1组件成为输入焦点:ActiveControl=Label1。

在同一时时刻,应用程序只能有一个输入焦点。

2.BorderIcons用来设定标题栏上出现哪些系统图标。

它是一个集合,可以设成以下几个类型:最大化按钮(biMaximize)、最小化按钮(biMinimize)、帮助按钮(biHelp)和系统菜单(biSystemMenu)。

3.Icon属性用来指定当窗体最小化时显示的图标。

4.KeyPreview属性为true时,表示击键事件发生时先传给窗体,然后再传给有输入焦点的组件上,相当于窗体截获了原本属于组件的事件。

缺省值为false,表示击键事件只送到当前有输入焦点的组件上。

5.Menu属性用来指定窗体的主菜单。

6.Visible属性用来确定窗体是否可见。

此外还有一些运行时态属性,这些属性只有在程序运行的时候才能通过编程访问。

这种属性主要有:Active属性用来确定窗体是否获得输入焦点。

ActiveMDIChild这个函数将返回当前活动的子窗体。

DropTarget属性用来指定窗体是否是拖放操作的对象。

Parent属性用来设定包含窗体的窗口控件,通常是另一个窗体。

如果窗体没有包含它的控件,那么它的Parent属性为nil。

2)问:Windows窗体有很多样式,比如对话框,弹出窗口。

如果我要控制窗体的边界样式,应该怎么办?答:属性BorderStyle可以指定窗体边界的外观和行为。

它一共有六种可能的取值。

bsDialog表示大小不可变的标准的对话框边界。

C#自定义控件三Vista按钮

C#自定义控件三Vista按钮

C#自定义控件三Vista按钮效果图:Vista和Win7操作系统的按钮非常华丽,用C#GDI+去实现也挺方便的,这个是参考网上源码修改过来的,个人觉得非常有学习价值。

第一步:添加用户控件,命名为myVistaButton第二步:确定需要的属性,例如文字、背景颜色、图片等。

第三步:重写Paint事件,为了增强效果,还可以重写鼠标移入移出等事件。

贴出核心代码:#region方法private GraphicsPath RoundRect(RectangleF r, float r1, float r2, float r3, float r4){float x = r.X, y = r.Y, w = r.Width, h = r.Height;GraphicsPath rr = new GraphicsPath();rr.AddBezier(x, y + r1, x, y, x + r1, y, x + r1, y);rr.AddLine(x + r1, y, x + w - r2, y);rr.AddBezier(x + w - r2, y, x + w, y, x + w, y + r2, x + w, y + r2);rr.AddLine(x + w, y + r2, x + w, y + h - r3);rr.AddBezier(x + w, y + h - r3, x + w, y + h, x + w - r3, y + h, x + w - r3, y + h);rr.AddLine(x + w - r3, y + h, x + r4, y + h);rr.AddBezier(x + r4, y + h, x, y + h, x, y + h - r4, x, y + h - r4);rr.AddLine(x, y + h - r4, x, y + r1);return rr;}private StringFormat StringFormatAlignment(ContentAlignment textalign){StringFormat sf = new StringFormat();switch (textalign){case ContentAlignment.TopLeft:case ContentAlignment.TopCenter:case ContentAlignment.TopRight:sf.LineAlignment = StringAlignment.Near;break;case ContentAlignment.MiddleLeft:case ContentAlignment.MiddleCenter:case ContentAlignment.MiddleRight:sf.LineAlignment = StringAlignment.Center;break;case ContentAlignment.BottomLeft:case ContentAlignment.BottomCenter:case ContentAlignment.BottomRight:sf.LineAlignment = StringAlignment.Far;break;}switch (textalign){case ContentAlignment.TopLeft:case ContentAlignment.MiddleLeft:case ContentAlignment.BottomLeft:sf.Alignment = StringAlignment.Near;break;case ContentAlignment.TopCenter:case ContentAlignment.MiddleCenter:case ContentAlignment.BottomCenter:sf.Alignment = StringAlignment.Center;break;case ContentAlignment.TopRight:case ContentAlignment.MiddleRight:case ContentAlignment.BottomRight:sf.Alignment = StringAlignment.Far;break;}return sf;}///<summary>///绘制外部边框///</summary>///<param name="g"></param>private void DrawOuterStroke(Graphics g){if (this.ButtonStyle == Style.Flat && this.mButtonState == State.None) { return; }Rectangle r = this.ClientRectangle;r.Width -= 1; r.Height -= 1;using(GraphicsPath rr = RoundRect(r, CornerRadius, CornerRadius, CornerRadius, CornerRadius)){using (Pen p = new Pen(this.ButtonColor))g.DrawPath(p, rr);}}}///<summary>///绘制内部边框///</summary>///<param name="g"></param>private void DrawInnerStroke(Graphics g){if (this.ButtonStyle == Style.Flat && this.mButtonState == State.None) { return; }Rectangle r = this.ClientRectangle;r.X++; r.Y++;r.Width -= 3; r.Height -= 3;using(GraphicsPath rr = RoundRect(r, CornerRadius, CornerRadius, CornerRadius, CornerRadius)){using (Pen p = new Pen(this.HighlightColor)){g.DrawPath(p, rr);}}}///<summary>///绘制背景///</summary>///<param name="g"></param>private void DrawBackground(Graphics g){if (this.ButtonStyle == Style.Flat && this.mButtonState == State.None) { return; }int alpha = (mButtonState == State.Pressed) ? 204 : 127;Rectangle r = this.ClientRectangle;r.Width--; r.Height--;using(GraphicsPath rr = RoundRect(r, CornerRadius, CornerRadius, CornerRadius, CornerRadius)){using (SolidBrush sb = new SolidBrush(this.BaseColor)){g.FillPath(sb, rr);SetClip(g);if(this.BackImage != null) { g.DrawImage(this.BackImage, this.ClientRectangle); }g.ResetClip();using(SolidBrush sb = new SolidBrush(Color.FromArgb(alpha, this.ButtonColor))){g.FillPath(sb, rr);}}}///<summary>///绘制高亮颜色///</summary>///<param name="g"></param>private void DrawHighlight(Graphics g){if (this.ButtonStyle == Style.Flat && this.mButtonState == State.None) { return; }int alpha = (mButtonState == State.Pressed) ? 60 : 150;Rectangle rect = new Rectangle(0, 0, this.Width, this.Height / 2);using (GraphicsPath r = RoundRect(rect, CornerRadius, CornerRadius, 0, 0)){using(LinearGradientBrush lg = new LinearGradientBrush(r.GetBounds(),Color.FromArgb(alpha,this.HighlightColor),Color.FromArgb(alpha / 3, this.HighlightColor),LinearGradientMode.Vertical)) {g.FillPath(lg, r);}}}///<summary>///绘制鼠标移入颜色///</summary>///<param name="g"></param>private void DrawGlow(Graphics g){if (this.mButtonState == State.Pressed) { return; }SetClip(g);using (GraphicsPath glow = new GraphicsPath()){glow.AddEllipse(-5, this.Height / 2 - 10, this.Width + 11, this.Height + 11);using (PathGradientBrush gl = new PathGradientBrush(glow)){gl.CenterColor = Color.FromArgb(mGlowAlpha, this.GlowColor);gl.SurroundColors = new Color[] { Color.FromArgb(0, this.GlowColor) };g.FillPath(gl, glow);}}g.ResetClip();}///<summary>///绘制文本///</summary>///<param name="g"></param>private void DrawText(Graphics g){StringFormat sf = StringFormatAlignment(this.TextAlign);Rectangle r = new Rectangle(8, 8, this.Width - 17, this.Height - 17);g.DrawString(this.ButtonText, this.Font, new SolidBrush(this.ForeColor), r, sf);}///<summary>///绘制图片///</summary>///<param name="g"></param>private void DrawImage(Graphics g){if (this.Image == null) { return; }Rectangle r = new Rectangle(8, 8, this.ImageSize.Width, this.ImageSize.Height);switch (this.ImageAlign){case ContentAlignment.TopCenter:r = new Rectangle(this.Width / 2 - this.ImageSize.Width / 2,8, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.TopRight:r = new Rectangle(this.Width - 8 - this.ImageSize.Width, 8, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.MiddleLeft:r = new Rectangle(8, this.Height / 2 - this.ImageSize.Height / 2, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.MiddleCenter:r = new Rectangle(this.Width / 2 - this.ImageSize.Width / 2, this.Height / 2 - this.ImageSize.Height / 2, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.MiddleRight:r = new Rectangle(this.Width - 8 - this.ImageSize.Width, this.Height / 2 - this.ImageSize.Height / 2, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.BottomLeft:r = new Rectangle(8, this.Height - 8 - this.ImageSize.Height, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.BottomCenter:r = new Rectangle(this.Width / 2 - this.ImageSize.Width / 2, this.Height - 8 - this.ImageSize.Height, this.ImageSize.Width, this.ImageSize.Height);break;case ContentAlignment.BottomRight:r = new Rectangle(this.Width - 8 - this.ImageSize.Width, this.Height - 8 - this.ImageSize.Height, this.ImageSize.Width, this.ImageSize.Height);break;}g.DrawImage(this.Image, r);}private void SetClip(Graphics g){Rectangle r = this.ClientRectangle;r.X++; r.Y++; r.Width -= 3; r.Height -= 3;using(GraphicsPath rr = RoundRect(r, CornerRadius, CornerRadius, CornerRadius, CornerRadius)){g.SetClip(rr);}}#endregion重写Paint事件:private void myVistaButton_Paint(object sender, PaintEventArgs e){e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;DrawBackground(e.Graphics);DrawHighlight(e.Graphics);DrawImage(e.Graphics);DrawText(e.Graphics);DrawGlow(e.Graphics);DrawOuterStroke(e.Graphics);DrawInnerStroke(e.Graphics);}点击这里下载源代码。

原创]C++builder组件属性详解

原创]C++builder组件属性详解

原创]C++builder组件属性详解尽管C++Builder的组件种类繁多,每种组件又都有许多不同的属性,但是在这些众多的属性中有相当一部分是大多数组件所共有的。

因此我们应当主要掌握这些共有组件。

在设计时设置属性一般是通过属性窗口来进行的。

在属性窗口设置组件属性的操作步骤如下:1)打开相应对象的属性窗口。

2)从属性列表中选定属性名称。

3)在属性窗口的右列输入或选择新的属性值。

注意:有些属性在设置值右侧有…按钮,单击该按钮会出现相应的设置对话框,设置值需要在对话框中选定。

在代码中设置组件属性的方法是:对象名称->属性名称=设置值;下面我们来介绍一些主要组件的主要属性。

窗体form的属性:1.Caption:标题。

是窗体和各种可视化控件的共有属性,用来指定窗体标题栏中的说明文字,默认与控件名相同,但程序员可以在对象监视器和代码中修改。

在代码中修改的格式为:Form->Caption = "da";// da表示程序员输入的标题。

通常,对于Windows系统中的多文档界面( MDI )应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为“ <应用程序名> - <打开的文档名>”;当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。

所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。

2.Name:变量名。

是窗体和所有控件的共有属性,系统给予其默认名字,但程序员可以在对象监视器修改,不要在代码中修改。

通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段,根据设计文档修改窗体的Name属性。

一般情况下,不要在程序运行期间通过代码修改Name属性。

3.Enabled:可操作性。

决定了对象在运行时是否允许用户进行操作。

它是逻辑型:true表示允许用户操作并可对其操作作出响应;false表示禁止用户操作,此时对象呈灰色。

c++ builder 表格输入原理

c++ builder 表格输入原理

C++Builder是Embarcadero公司开发的一款集成开发环境,主要用于快速开发Windows应用程序和跨评台移动应用程序。

C++Builder 内置了丰富的组件库和强大的图形用户界面设计器,使得开发者可以快速构建界面友好、功能强大的应用程序。

在C++Builder中,表格输入是一种常见的数据输入方式。

通过表格输入,用户可以方便地输入和编辑大量的数据,例如数据库中的表格数据。

本文将介绍C++Builder中表格输入的原理和实现方法。

1. 表格输入控件在C++Builder中,表格输入通常使用TStringGrid控件来实现。

TStringGrid是一个二维的表格控件,可以显示和编辑多行多列的文本。

开发者可以通过TStringGrid来创建一个类似Excel表格的界面,用户可以在其中进行数据的输入和编辑。

2. 数据绑定在进行表格输入时,通常需要将表格与数据源进行绑定,以便将用户输入的数据保存到数据库中,或者从数据库中加载数据到表格中进行显示和编辑。

在C++Builder中,可以使用TDataSource和TDBGrid 组件来实现数据源和表格的绑定。

通过TDataSource和TDBGrid,开发者可以实现数据的双向绑定,即用户在表格中输入的数据会自动同步到数据源中,而数据源中的数据也会自动在表格中更新显示。

3. 事件处理在表格输入过程中,可能需要对用户的输入进行一些处理,例如数据校验、输入提示等。

C++Builder提供了丰富的事件处理机制,开发者可以通过事件处理函数来实现这些功能。

可以通过OnValidate事件来实现数据校验,通过OnEdit事件来实现输入提示等功能。

4. 自定义表格输入除了使用TStringGrid和TDBGrid控件进行表格输入外,开发者还可以通过自定义控件来实现更灵活的表格输入界面。

可以使用TListView 或TDrawGrid来实现自定义的表格输入界面,从而满足特定的界面设计需求。

基于C++ Builder的控制面板组件的实现

基于C++ Builder的控制面板组件的实现

基于C++ Builder的控制面板组件的实现摘要:介绍了Windows系统中控制面板的相关知识,详细介绍了C+{++} Builder编写的控制面板组件的原理和具体实现方法。

关键词:控制面板,API,动态链接库,消息处理1 控制面板控制面板程序是一个须导出CPLApplet函数的DLL文件,只是挂上了CPL的后缀名而已。

既然要导出CPLApplet函数,那么CPLApplet这个函数是极其重要的。

不光是控制面板,只要是想加载CPL文件的其他所有应用程序都必须取得CPLApplet函数的地址,然后通过调用该函数来完成相应的功能。

函数原型:LONG APIENTRY CPlApplet(HWND hwndCPl,UINTuMsg,LONG lParam1,LONG lParam2)。

参数的意义:hwndCPl 激活控制面板组件应用程序的窗口句柄uMsg外界传入的控制消息,CPLApplet函数就是通过该消息去完成相应的任务的lParam1 消息参数1,lParam2 消息参数2。

控制面板应用程序执行的过程如下:当我们打开控制面板时,系统会遍历目录中所有的应用程序(CPL程序),并传送CPL__INIT消息。

这表示控制面板中所有的程序都在进行初始化,如果初始化失败,应用程序中的CPlApplet 函数返回零值。

当有调用者时通知调用者中止该控制面板应用程序的运行并释放占用的资源。

若没有,则只直接终止控制面板中程序的运行。

如果CPlApplet处理消息成功后,CPL程序将接收到CPL__GETCOUNT,并返回控制面板应用程序中模块的个数。

接着,每个应用程序中的CPlApplet 函数都会收到一条CPL_INQUIRE 和CPL_NEWINQUIRE消息。

控制面板就是利用这两个消息来取得每个组件的名称、描述及图标等信息。

CPL_INQUIRE 会将组件信息填入TCPLInfo的结构中,TCPLInfo结构的声明如下:typedef struct tagCPLINFO {int idIcon;int idName;int idInfo;LONG lData;} CPLINFO;typedef tagCPLINFO TCPLInfo;CPL_NEWINQUIRE与CPL_INQUIRE消息所完成的功能差不多,但它会将组件信息填入TNewCPLInfo结构而不是TCPLInfo结构中,TNewCPLInfo结构虽较TCPLInfo更为完整,但它所包含的资料无法缓存,使用TNewCPLInfo会使开启控制面板的速度减慢,所以微软文件上注明着”除非必要,否则请尽量以CPL_INQUIRE消息来传递组件信息”。

borland c++ builder7

borland c++ builder7

创建多文档界面(MDI)程序多文档界面(Multiple Document Interface,MDI)是在一个应用程序中能够同时处理两个或者更多个窗体的界面形式。

例如常见的MicroSoft Word 这个排版编辑软件就可以同时编辑多篇文章,因此它是一个典型的多文档界面的应用程序。

MDI应用程序的多窗体特性使用户可以在同一个工作区域内对多个文档进行观察和数据交换,以便工作的协调和高效地进行。

MDI的工作区域分为主窗体(MDI)和子窗体(Child)。

主窗体是程序运行的基本环境,也是生成子窗体的基础,它通常不对用户的文档进行处理。

主窗体以外就是子窗体,每个子窗体负责处理一个用户得文档。

这些文档可以是相同得文件格式,也可以是不同的文件格式。

C++Builder提供了一整套设计MDI应用程序的组件,让你很容易、快速地开发一个MDI的应用程序。

设计开发一个MDI应用程序一般分三个步骤:1.创建MDI主窗体;2.创建MDI子窗体;3.在MDI主窗体和子窗体中加入代码。

我们现在就以开发一个简单的多文档界面的文字处理应用程序为例子,按以上三个步骤一步步讲述如何开发一个MDI应用程序。

一.创建MDI主窗体在MDI应用程序中,主窗体为应用文档提供了一个工作平台,所有的子窗体都在主窗体中打开和工作,同时主窗体也是应用程序的启动窗体,因此,创建主窗体是创建MDI应用程序的第一步。

1.新建一个工程,把Form1的caption属性和name属性设置为MDIFrm,并把FormStyle 属性设置为fsMDIForm;2.选择【Project】菜单下的【Options】命令打开【Project Option】对话框,在【Forms】标签页中的Main Form组合框中选择所创建的主窗体名Form1,将该窗体设置为启动窗体;3.在主窗体中加入一个主菜单控件(MainMenu),和一个打开文件对话框控件(OpenDialog);4.在主菜单中添加菜单项;5.打开文件对话框的过滤编辑器,添加以下内容;二.创建MDI子窗体当MDI应用程序的主窗体创建之后,就可以再创建新的窗体作为子窗体,还可以通过该窗体模板创建多个子窗体的实例,最后还可以在子窗体上进行编辑操作以满足要求。

C++Builder_资料库

C++Builder_资料库

C++Builder 资料库1.怎样在C++Builder中创建使用DLL2.用C++Bulider在WIN.INI中保存信息3.如何在C++Builder中检测硬件4.C++Builder如何响应消息及自定义消息5.利用C++ Builder开发动画DLL6.用C++ Builder 3制作屏幕保护程序7.TCP/IP头格式8.UDP9.判断windows的Desktop及其它目录10用C++Builder创建数字签名11用Enter 键控制焦点切换的方法12.拦截Windows 消息13.使用CommaText14.程序开始时先显示信息框15.怎样获取程序的命令行参数?16.如何监视剪贴板17.如何使用OnIdle事件18.用C++Builder编写串行异步通信程序19.C++BUILDER非可视组件的消息处理技巧20.用C++Builder 建立数据库VCL使用经验21.用C++ Builder创建基于Internet的点对点Chat22.用C++Builder获取应用程序图标23.BIG5到GB的转换技术24.C++BUILDER让你的任务栏图标动起来25.TFORM26.用BCB在windows桌面创建快捷方式27.读磁片磁区28.I/O 端口读写的实现29.检测鼠标位置30.令Win32 应用程序跳入系统零层31.如何取得Memo的行和列32.使用Sockets33.Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中?34.怎样隐藏应用程序的任务条图标35.编写自己的Ping.exe程序36.用C++Builder在WINNT下编制一个Service37.如何在C++ BUILDER中自动关闭WINDOWS屏保38.显示/隐藏任务栏图标39.信箱监视程序40.C++Building制作闹钟41.拨号上网IP地址的检知42.用C++ Builder编写Tray程序43.怎样用代码来最小化或恢复程序44.制作主窗口显示前的版权窗口45.判断是否已经联到internet46.获取登陆用户名47.隐藏桌面图标48.程序启动时运行49.控制面板的调用50.模拟键盘按键51.让标题栏闪烁52.启动屏幕保护53.年月日星期的取法54.键盘事件55.隐藏任务栏56.禁止关机57.怎样以最小化方式启动程序58.在Memo中增加一行后,如何使最后一行能显示59.设置壁纸方法怎样在C++Builder中创建使用DLL自从C++Builder从去年浪漫情人节上市以来,吸引了大量的Delphi、VC、Vb的程序员到它的怀抱,大量的C、C++程序员感叹道:总算有了C的可视化开发工具,对我也是一样,从BC、Delphi到C++Builder。

Cbuilder教程大全

Cbuilder教程大全

Cbuilder教程⼤全BorlandC++Builder5.0是Interpries(Borland)公司推出的基于C++语⾔的快速应⽤程序开发(RapidApplicationDevelopment,RAD)⼯具,它是最先进的开发应⽤程序的组件思想和⾯向对象的⾼效语⾔C++融合的产物。

C++Builder充分利⽤了已经发展成熟的Delphi的可视化组件库(VisualComponentLibrary,VCL),吸收了BorlandC++5.0这个优秀编译器的诸多优点。

C++Builder结合了先进的基于组件的程序设计技术,成熟的可视化组件库和优秀编译器,调试器。

发展到5.0版本,C++Builder已经成为⼀个⾮常成熟的可视化应⽤程序开发⼯具,功能强⼤⽽且效率⾼。

C++Builder的特⾊:1.C++Builder是⾼性能的C++开发⼯具C++Builder是基于C++的,它具有⾼速的编译,连接和执⾏速度。

同时,C++Builder具有双编译器引擎,不仅可以编译C/C++程序,还能编译ObjectPascal语⾔程序。

2.C++Builder是优秀的可视化应⽤程序开发⼯具C++Builder是⼀完善的可视化应⽤程序开发⼯具,使程序员从繁重的代码编写中解放出来,使他们能将注意⼒重点放在程序的设计上,⽽不是简单的重复的劳动中。

同时,它提供的完全可视的程序界⾯开发⼯具,从⽽使程序员对开发⼯具的学习周期⼤⼤缩短。

3.C++Builder具有强⼤的数据库应⽤程序开发功能C++Builder提供了强⼤的数据库处理功能,它使的程序员不⽤写⼀⾏代码就能开发出功能强⼤的数据库应⽤程序,这些主要依赖于C++Builder众多的数据库感知控件和底层的BDE数据库引擎。

C++Builder除了⽀持Microsoft的ADO(ActiveDataObject)数据库连接技术,还提供了⼀种⾃⼰开发的成熟的数据库连接技术——BDE(BorlandDatabaseEngine)数据库引擎。

C++Builder_资料库

C++Builder_资料库

C++Builder 资料库1.怎样在C++Builder中创建使用DLL2.用C++Bulider在WIN.INI中保存信息3.如何在C++Builder中检测硬件4.C++Builder如何响应消息及自定义消息5.利用C++ Builder开发动画DLL6.用C++ Builder 3制作屏幕保护程序7.TCP/IP头格式8.UDP9.判断windows的Desktop及其它目录10用C++Builder创建数字签名11用Enter 键控制焦点切换的方法12.拦截Windows 消息13.使用CommaText14.程序开始时先显示信息框15.怎样获取程序的命令行参数?16.如何监视剪贴板17.如何使用OnIdle事件18.用C++Builder编写串行异步通信程序19.C++BUILDER非可视组件的消息处理技巧20.用C++Builder 建立数据库VCL使用经验21.用C++ Builder创建基于Internet的点对点Chat22.用C++Builder获取应用程序图标23.BIG5到GB的转换技术24.C++BUILDER让你的任务栏图标动起来25.TFORM26.用BCB在windows桌面创建快捷方式27.读磁片磁区28.I/O 端口读写的实现29.检测鼠标位置30.令Win32 应用程序跳入系统零层31.如何取得Memo的行和列32.使用Sockets33.Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中?34.怎样隐藏应用程序的任务条图标35.编写自己的Ping.exe程序36.用C++Builder在WINNT下编制一个Service37.如何在C++ BUILDER中自动关闭WINDOWS屏保38.显示/隐藏任务栏图标39.信箱监视程序40.C++Building制作闹钟41.拨号上网IP地址的检知42.用C++ Builder编写Tray程序43.怎样用代码来最小化或恢复程序44.制作主窗口显示前的版权窗口45.判断是否已经联到internet46.获取登陆用户名47.隐藏桌面图标48.程序启动时运行49.控制面板的调用50.模拟键盘按键51.让标题栏闪烁52.启动屏幕保护53.年月日星期的取法54.键盘事件55.隐藏任务栏56.禁止关机57.怎样以最小化方式启动程序58.在Memo中增加一行后,如何使最后一行能显示59.设置壁纸方法怎样在C++Builder中创建使用DLL自从C++Builder从去年浪漫情人节上市以来,吸引了大量的Delphi、VC、Vb的程序员到它的怀抱,大量的C、C++程序员感叹道:总算有了C的可视化开发工具,对我也是一样,从BC、Delphi到C++Builder。

c++buildertedit控件设置文本

c++buildertedit控件设置文本

c++buildertedit控件设置文本摘要:1.C++ Builder简介2.TEdit控件概述3.设置TEdit控件文本的方法4.实例演示5.总结正文:【1.C++ Builder简介】C++ Builder是一款由Borland公司开发的集成开发环境(IDE),它具有强大的功能和易用的界面,深受开发者喜爱。

在C++ Builder中,有许多控件可供开发者使用,其中TEdit控件就是一款非常实用的文本编辑器。

【2.TEdit控件概述】TEdit控件是C++ Builder中的一个文本编辑器,它具有丰富的功能,如支持文本输入、编辑、查找、替换等。

在应用程序中,我们可以将TEdit控件用于用户输入、数据显示等场景。

【3.设置TEdit控件文本的方法】要在C++ Builder中设置TEdit控件的文本,我们可以使用以下方法:1.设置控件的Text属性:这是最直接的方法,只需在属性面板中设置Text 属性即可。

例如:```edit1.Text = "Hello, World!";```2.使用Notify事件:当Text属性发生变化时,TEdit控件会发送一个Notify事件。

我们可以捕获此事件并设置文本。

例如:```private:void __fastcall edit1Notify(TObject *Sender);public:__fastcall TForm1(TComponent *Owner);```3.使用OnChange事件:当用户在编辑框中输入或修改文本时,TEdit控件会触发OnChange事件。

我们可以在此事件中设置文本。

例如:```private:void __fastcall edit1Change(TObject *Sender);public:__fastcall TForm1(TComponent *Owner);```【4.实例演示】以下是一个简单的实例,演示如何设置TEdit控件的文本:```delphiunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ComCtrls;typeTForm1 = class(TForm)edit1: TEdit;procedure edit1Notify(Sender: TObject);procedure edit1Change(Sender: TObject);beginedit1.Text := "Hello, World!";end;end;varForm1: TForm1;implementationbeginApplication.Initialize;Form1 := TForm1.Create(Application);Form1.ShowModal;Application.Terminate;end.```【5.总结】在C++ Builder中,TEdit控件是一个非常实用的文本编辑器。

C++Builder安装方法

C++Builder安装方法

C++Builder安装⽅法C++ Builder是⼀个⽼软件了,但是还是⼀个很好⽤的软件,今天就给⼤家分享⼀下C++ Builder的安装⽅法。

⼯具/原料C++ Builder安装包计算机Dameno_Tools安装1. 1安装BCB之前,先安装Dameno_Tools,双击安装包进⾏安装。

2. 2这⾥选择免费许可。

3. 3选择“不允许MountSpace使⽤统计信息”,然后按照提⽰安装完毕即可。

ENDC++ Builder安装1. 1⽤虚拟光驱添加映像CBuilder6企业版CD1,双击即可。

2. 2双击映像⽬录,载⼊之后双击左下⾓DISK1,选择C++ Builder 6。

3. 3点击“Next”,这是需要输⼊注册码。

4. 4打开注册机KEYGEN,点击Generate如下图所⽰,将⽣成的注册码填⼊上图。

5. 5⼀直点“Next”,直到这⼀步,选择Typical模式安装。

6. 6这⾥不勾选Use VisiBroker/CORRA SUPPROT选项;默认选择Office 2000;点击“Next”,不勾选Install InterBase Client。

7. 7⼀直点击“Next”,直到看到下⾯的界⾯,选择⽂件夹进⾏安装,这⾥注意不要安装在C盘,会出现各种问题。

8. 8单击“Next”,不勾选“Save installation….”。

9. 9点击“Next”,点击“install”开始安装;途中提⽰插⼊第⼆张盘,开始加载第⼀张盘的⽅法⼀样载⼊第⼆张盘,加载完成后点击OK,安装完成后要求重启计算机,重启即可。

10. 10重启打开C++ Builder后注册,选择第⼆项,单击“Next”,打开注册机,将注册框中的三个序号以此填写到注册机中,此时注册机产⽣⼀个注册序列号,将其填到注册框Activation key中,单击“Next”,提⽰注册成功。

END其他项⽬安装1.安装IDE专家包,按要求选择安装⽬录即可。

c++ builder发展历史

c++ builder发展历史

C++ Builder 是由Embarcadero Technologies 公司开发的一个集成开发环境(IDE),用于快速开发Microsoft Windows 操作系统上的C++ 应用程序。

以下是C++ Builder 的一些主要发展历史里程碑:1. **1997年- C++ Builder 1.0 发布:** C++ Builder 的第一个版本于1997 年发布。

它基于Borland 的Delphi IDE,并提供了一个可视化的RAD(快速应用程序开发)环境,允许开发人员使用图形界面工具构建用户界面。

2. **1998年- C++ Builder3.0 发布:** 这个版本引入了对Windows 98 的支持,并且在IDE 中增加了一些新的可视化组件和功能。

3. **2000年- C++ Builder 5.0 发布:** 引入了对Windows 2000 的支持,同时还改进了IDE 的稳定性和性能。

4. **2002年- C++ Builder 6.0 发布:** 这个版本引入了对.NET Framework 的初步支持,并提供了许多新的组件和特性,以便更好地支持Web 开发。

5. **2006年- CodeGear 发布C++ Builder 2007:** CodeGear 公司是Borland 公司的一个分支,专注于开发工具。

C++ Builder 2007 引入了对Windows Vista 和Windows 7 的支持。

6. **2009年- Embarcadero Technologies 收购CodeGear:** Embarcadero Technologies 收购了CodeGear,继续开发和推广C++ Builder。

7. **2011年- Embarcadero RAD Studio XE2 发布:** 这个版本引入了FireMonkey 框架,允许开发人员创建跨平台的应用程序,支持Windows、macOS 和iOS。

C++Builder中使用图形C++Builder的VCL图形组件封装了Windows图形

C++Builder中使用图形C++Builder的VCL图形组件封装了Windows图形

C++Builder中使用图形C++Builder的VCL图形组件封装了Windows图形设备接口(GDI,Graphics Device Interface),使得在Windows程序设计中添加图形也变得很容易。

在C++Builder应用程序中绘制图形,应该在图形对象(如Form,Image等)的画布(Canvas)中绘制,而不是直接在对象中绘制。

画布是图形对象的属性,同时它本身又是对象。

画布对象的一个主要的优点是它能够有效地处理资源并且能管理设备场境。

所以应用程序可以用相同的方法在屏幕、打印机、位图或者图元文件中绘图。

直接在控件的画布上绘图,该图就会立即显示。

画布(Canvas)的主要属性和方法:一、使用画笔(Pen)。

画布的Pen属性控制线条出现的方式,包括用来绘制形状外框的线条。

画笔本身有四个属性:Color,Width,Style和Mode:(1)Color属性:更改画笔的颜色;Canvas->Pen->Color=color;还可以用rgb的各分量的值来表示一种颜色:Canvas->Pen->Color=RGB(214,214,200);(2)Width属性:更改画笔的宽度;Canvas->Pen->Width=n;(3)Style属性:更改画笔的样式;Canvas->Pen->Style=psDash;(4)Mode属性:更改画笔的模式。

Canvas->Pen->Style=pmCopy;二、使用画刷(Brush)画布的Brush属性控制填充区域的方式,包括形状的内部区域。

画刷有三个属性:(1) Color属性:更改填充颜色;Canvas->Brush->Color=color;(2) Style属性:更改画刷样式;Canvas->Brush->Style=bsSolid;(3)使用位图作为画刷模式。

C++Builder文件,目录和驱动器

C++Builder文件,目录和驱动器

第6章文件、目录和驱动器通常,文件、目录和驱动器的管理是由操作系统来完成的。

但是,对文件、目录和驱动器的一些具体操作却要通过编程来实现。

在C ++B u i l d e r集成开发环境中编程可以方便地实现对文件、目录和驱动器的操作。

在界面方面,C ++B u i l d e r提供了一些标准的文件对话框。

对于具体的文件、目录和驱动器的操作,可以通过C ++B u i l d e r提供的丰富的函数来实现。

下面首先介绍标准的文件对话框,然后按字母顺序介绍了文件操作、目录操作、驱动器操作和文件名操作方面常用的函数,最后还有一些例程、方法和技巧。

在例程中,对 C ++B u i l d e r 提供的与文件、目录和驱动器有关的组件也进行了说明。

6.1 文件6.1.1 C标准文件类型文件的分类有多种方式,比如:缓冲文件和非缓冲文件;二进制文件和文本文件等。

这里所说的C标准文件是缓冲文件,可以支持两种文件类型:二进制文件和文本文件。

C标准文件类型是在头文件s t d i o.h中声明了的。

标准文件类型是通过文件指针来进行存取的,它是文件类型的变量并用如下方法声明:FILE* fp;这个文件指针,指向为每个使用的文件在内存中开辟的一个区域,用来存放文件的有关信息(如文件名称、文件的状态以及文件的当前位置等参数)。

这些信息是保存在一个结构类型的变量中。

该结构体的类型是由系统定义的,取名为F I L E,程序中只需要声明指向该结构的指针即可通过它访问相应的文件。

具体对C标准文件类型(不能称其为类,只能称为类型)的使用不外乎下面一些内容:1. 文件的打开与关闭文件打开函数:FILE *fopen(const char *filename, const char *mode);FILE *_wfopen(const wchar_t *filename, const wchar_t *mode);// 重新FILE *freopen(const char *filename, const char *mode, FILE *stream);打开文件FILE *_wfreopen(const wchar_t *filename, const wchar_t *mode, FILE *stream);文件关闭函数:int fclose(FILE *stream);2. 文件的读写二进制文件的读写函数:size_t fread(void *ptr, size_t size, size_t n, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);文本文件的读写函数:char *fgets(char *s, int n, FILE *stream);wchar_t *fgetws(wchar_t *s, int n, FILE *stream); // Unicode versionint fputs(const char *s, FILE *stream);int fputws(const wchar_t *s, FILE *stream);int getc(FILE *stream);wint_t getwc(FILE *stream);int fputc(int c, FILE *stream);wint_t fputwc(wint_t c, FILE *stream);3. 文件的定位int fseek(FILE *stream, long offset, int whence);long int ftell(FILE *stream);int fsetpos(FILE *stream, const fpos_t *pos);int fgetpos(FILE *stream, fpos_t *pos);4. 文件的状态检查int feof(FILE *stream);// 检查文件是否结束int ferror(FILE *stream);// 文件操作是否出错void clearerr(FILE *stream);// 清除文件的所有状态以上C标准文件的操作函数,对于C ++程序员来说,不应该有问题。

利用C Builder自定义Windows窗体“系统菜单”

利用C  Builder自定义Windows窗体“系统菜单”

利用 C++Builder 自定义 Windows 窗体“系统菜单” 安 徽 合 肥 智 能 机 械 研 究 所 张 建 军
---------------------------------------------------------- 在开发应用程序时,软件人员希 望所编制的程序具有风格独特的用户界面 ,为此不惜采用一些占用系统内 存资源颇多的第三方控件,结果导致程序运行速度变慢或者打包后的安装 程序体积太大的缺点。

其实,如果我们仔细研究一下提供的几百个,就不难发现,通过直接 调用函数,发送、接收或者拦截系统消息等方法,同样可以实现在某些情 况下只能依靠调用才能达到的界面效果。

例如为我们所熟知的屏幕抓图软件,在其强大的屏幕抓图功能背后, 还具有一项比较特殊的界面效果。

通常情况下,当用鼠标点击一个窗体左上角的时,所看到的系统菜单 一般都是固定不变的。

的窗体改变了标准系统菜单,增加了多个新菜单项,并分别赋予它们 不同的功能。

其实这种效果的实现并不复杂,主要通过调用、等函数完成。

下面,我们就以++为例,讨论一下如何在自己的应用程序中实现类似 的界面效果,并给出完整代码实例。





















C++Builder第三方组件包的安装使用步骤(图文详解)

C++Builder第三方组件包的安装使用步骤(图文详解)

教程使用的组件包名为iocomp,本人非专业编程人员,只是为实验室的项目做上位机界面,简单使用了这款组件包,感觉灰常强大。

从网上搜集的安装方法,亲自使用没有什么问题,将之分享出来,欢迎广大行家里手批评指正。

1、File->Open->找到你要安装的第三方控件的.BPK文件,打开2、在弹出的窗口中点击Compile3、编译成功后再点击Install4、关闭窗口,提示是否保存,选择“是”5、重新启动C++Builder或者是:1、component->Install component->Package file name->Browse2、同上或者是:1、component->Import ActiveX->Package file name->Browse->找到你想要安装的OCX->Install ->ok2、同上6、从控件栏选择某一控件拖放到界面窗口,如一按钮控件,运行(F9),会出现该头文件无法找到的情况。

7、一直点取消,直到出现8、显然,需要我们手动将组建包中的各种头文件放到编译器能找到的位置。

点“工程->选项”,从选项卡中选择“Directories/Conditionals”,打开Directories->include path后面的“…”9、再次点击“…”10、找到你的组件包存放位置,选中组件包文件夹,依次点“确定”“添加”“确定”“确定”11、再次运行,仍然无法打开头文件,检查组件包头文件会发现这些头文件都是.hpp类型,于是手动修改代码中的头文件名为.hpp类型(此处不知是否有更快捷的方法)12、运行成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7讲 使用Vista 组件
Windows Vista 提供了一些全新的界面元素(UI),如半透明玻璃效果的窗体,新的文件打开和保存对话框、新的信息提示对话框等。

C++ Builder 11提供了对这些全新UI 元素的支持,本章将介绍如何开发Vista 风格的应用程序。

1 玻璃窗体
Vista 下玻璃窗体效果的控制由TForm 的GlassFrame 属性控制。

GlassFrame 是一个TGlassFrame 对象,它有6个属性:
● Enabled
该属性指定了是否开启玻璃窗体效果。

若要使用玻璃效果,此属性必须设为true 。

● SheetOfGlass
该属性指定了玻璃窗体的类型。

当SheetOfGlass 为true 时,窗体全部为玻璃效果,否则窗体的玻璃效果区域为自定义,此区域由GlassFrame 对象的Bottom 、Top 、Left 和Right 属性共同确定。

参见图1。

图1 Bottom 、Top 、Left 和Right 属性含义
● Bottom
该属性指定了自定义玻璃效果区域的下边界宽度。

● Top
该属性指定了自定义玻璃效果区域的上边界宽度。

● Left
该属性指定了自定义玻璃效果区域的左边界宽度。

● Right
该属性指定了自定义玻璃效果区域的右边界宽度。

图2是Enabled 属性为true ,SheetOfGlass 属性为false ,Bottom 、Top 、Left 和Right 属性分别为0、0、0和80的程序运行结果,图3是Enabled 属性和SheetOfGlass 属性均为true 时的程序运行结果。

Top
Bottom
Left Right
Glass 区域 窗体区域
图2 SheetOfGlass属性为false图3 SheetOfGlass属性为true
2 TaskDialog消息框
长期以来,Windows 提示消息给用户的方式大部分是通过消息框进行的,而 Windows 提供的消息框所展示的文本和可供选择的操作是有限的,用户可选择的操作仅有:确定、取消、是、否、重试、终止、忽略七种。

如果在批量文件操作中,目的文件夹存在同名文件时希望给出“是”、“全部都是”的提示,使用标准消息框就无能为力了。

Vista 考虑到了这种情况。

TaskDialog 就是用来代替消息框的一种全新 UI,TaskDialog 不仅可以自定义可供选择的操作,还可以拥有更多显示信息的途径,如折叠窗体、脚注等,除此之外,TaskDialog 还能显示命令链接、超级链接、单选框、进度条等控件,使得用户能从一个位置获取到更多的信息。

图4显示了一个作为进度条使用的TaskDialog。

图4 作为进度条的TaskDialog
2.1 TaskDialog主要属性
●Buttons属性
Buttons属性列出了TaskDialog除标准按钮以外的自定义按钮,在对象监视器中点
击Buttons栏右侧的“…”按钮,可在弹出的Buttons属性编辑框中对TaskDialog
的附加按钮进行增加、删除和修改的操作。

⏹Caption属性
Caption属性指定了附加按钮的标题。

⏹ModalResult属性
ModalResult属性指定了附加按钮在此TaskDialog中的标识,此属性的用法将
在TaskDialog中的单击事件函数中作仔细介绍。

●Caption属性
Caption属性指定了TaskDialog的主标题。

●CommonButtons属性
CommonButtons属性指定了TaskDialog要显示出的标准按钮。

●Flags属性
Flags属性指定了TaskDialog的外观及功能特性,如设置tfShowProgressBar子属性为true可使得TaskDialog显示进度条等。

●FooterIcon属性
FooterIcon属性指定了TaskDialog左下角显示的小图标类型。

●FooterText属性
FooterText属性指定了FootIcon图标旁边的说明文字。

●RadioButtons属性
Buttons属性列出了TaskDialog中显示的单选按钮,在对象监视器中点击RadioButtons栏右侧的“…”按钮,可在弹出的RadioButtons属性编辑框中对TaskDialog的附加按钮进行增加、删除和修改的操作。

●Title属性
Title属性指定了TaskDialog主图标旁边的说明文字。

●Text属性
Text属性指定了Title下方的说明文字。

●ExpandButtonCaption属性
ExpandButtonCaption属性指定了TaskDialog折叠按钮的标题。

●ExpandedText属性
ExpandedText属性指定了TaskDialog折叠按钮展开后,显示在Text属性下方的标题。

图5显示了TaskDialog的各个主要属性的使用效果。

图5 设置了一些属性后的TaskDialog的外观
2.2 TaskDialog主要事件
●OnButtonClicked事件
当TaskDialog中的标准按钮或附加按钮被单击后,就会触发OnButtonClicked事件。

事件函数参数ModalResult指定了触发此事件的按钮的ModalResult。

对于TaskDialog内置的6个标准按钮tcbOK、tcbYes、tcbNo、tcbCancel、tcbRetry、
和tcbClose,其ModalResult值分别为1、6、7、4、2和8。

PS:请记住这6个标准按钮的ModalResult值!
●OnRadioButtonClicked事件
当TaskDialog中的单选按钮被单击后所触发的事件。

3 TFileOpenDialog文件打开对话框
TFileOpenDialog封装了标准的Vista文件打开对话框。

如图6所示:
图6 FileOpenDialog对话框
3.1 TFileOpenDialog主要属性
●DefaultExtension属性
此属性值是一个字符串,当TFileOpenDialog对话框执行后,它将自动地将此字符
串附加到文件名后。

●DefaultFolder属性
此属性指定了默认的起始路径。

●FavoriteLinks属性
此属性是一个列表,表中的每一项都指定了一个文件名或文件夹的绝对路径。

FavoriteLinks中的内容将显示在TFileOpenDialog中的“收藏夹链接”栏中。

●TFileTypes属性
此属性是一个列表,表中的每一项都指定了一个文件类型的过滤策略。

⏹Display属性
此属性指定了文件类型过滤器的名称。

⏹FileMask属性
此属性指定了文件类型过滤器的内容,各文件后缀可用“|”进行“或”连接。

如要想仅显示后缀为bmp、jpeg和jpg的文件,可使FileMask的值为
“*.bmp|*.jpeg|*.jpg”。

●Options属性
此属性指定了TFileOpenDialog的一些外观及功能特性,如是否允许文件多选、是
否选择文件夹等。

●Title属性
此属性指定了TFileOpenDialog的标题。

3.2 TFileOpenDialog主要方法
●Excute方法
Excute方法用于打开对话框窗体。

3.3 TFileOpenDialog主要事件
●OnFileOKClick事件
当用户单击“打开”时,触发此事件。

4 TFileSaveDialog文件保存对话框
TFileSaveDialog封装了标准的Vista文件打开对话框。

其使用方法与TFileOpenDialog 完全相同,在此不做赘述。

相关文档
最新文档