用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧C++ Builder

C++Builder 编程指南2

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:43:10

三、常用控件的使用与编程

    静态文本是用户无法直接改变(不可编辑)的文本,程序可以在运行时刻来改变它,通常起标注和提示作用,它位于控件板的“Standard”页,其主要属性有:

    Align:指该控件在窗口中的位置或对齐方式(AlBottom:位于底部;AlClient:充满客户区;AlLeft:位于左方;AlNone:用户自定义;AlRight:位于右方;AlTop:位于顶部)。

    Alignment:显示文字在本控件中的位置(taCenter:居中;taLeftJustify:居左;taRightJustify:居右)。

    AutoSize:是否自动缩放(当设为true时,则控件的尺寸随控件里面文字的大小而改变)。

    Caption:控件中要显示的文字,即标题。

    Color:控件的颜色。

    Cursor:鼠标移入控件后的形状。

    Enabled:设置该控件是否有效。

    Font:设置该控件内文字的字体,单击该属性弹出字体设置对话框,可以设置字体风格、字体尺寸、字体颜色等。

    Name:控件名称。

    标准按钮主要用于响应用户鼠标或键盘按下的操作,它位于控件板的Standard页,其主要属性有:

    Cancel:当设为true时,此按钮相当于放弃按钮,即当用户按下Esc键时相当于用鼠标单击此按钮。

    Default:设置该按钮是否为缺省按钮。

    ModalResult:模式结果。(可选值有mrNone、mrOk、mrCancel、mrAbort、mrRetry、mrIgnore、mrYes、mrNo等)当设为非mrNone时,主要用于按下该按钮时关闭该按钮所属模式窗口。

    标准按钮控件可以响应的主要事件有:

    OnClick:鼠标单击或按下热键时的响应事件。

    OnEnter:当按钮获得输入焦点时的响应事件。

    OnExit:当按钮失去输入焦点时的响应事件。

    OnKeyDown:当键盘任意键按下时的响应事件。

    OnKeyPress:当键盘上字符键按下时的响应事件。

    OnKeyUp:放开键盘按键时的响应事件。

    OnMouseDown:鼠标键按下时的响应事件。

    OnMouseUp:鼠标键弹起时的响应事件。

    OnMouseMove:鼠标移动时的响应事件。

    单行编辑框控件用来接收来自用户的单行可编辑输入,它位于控件板的Standard页,其主要属性有:

    AutoSelect:自动选择。用来设置当该控件获得输入焦点时编辑框里的文本内容是否被自动选择。若用户想要在每次选中该编辑框时就要替换掉原有的内容,不是在原有的内容后添加新的内容,可把该属性设为true。

    CharCase:控制编辑框内字符的大小写。(可选值有ecLowerCase:全为小写;ecNormal:正常方式,大小写均可;ecUpperCase:全为大写。)

    MaxLength:设置输入文本的最大长度。当为0时表示不受限制。

    ReadOnly:当该属性设为true时,用户不能改变编辑框里面的文本。

    Text:当程序运行时显示在编辑框里面的文本内容。

    状态条控件一般放在应用程序界面底部,用于快速提示当前状态或提供简单帮助等功能,它位于控件板的Win32页上,其主要属性有:

    Panel:面板属性,用来设置状态条的风格。用鼠标单击该属

所示(状态条被分成三个小面板)。利用该编辑器和对象观察器就可以把状态条编辑成合适的样子。

    SimplePanel:简单面板。用来决定是显示一个简单面板还是多个面板,设为true时,只显示一个简单面板。

    SimpleText:当SimplePanel设为true时,显示在简单面板里的文本。

    下面以一实例介绍控件的用法。该程序可以实时地在状态条中显示当前鼠标位置,也可以在编辑框中直接输入鼠标的坐标值,用来改变鼠标在屏幕中的位置。

    (1) 从控件板的“Standard”页拖动两个静态文本控件“Label1”和“Label2”、两个单行编辑框“Edit1”和“Edit2”、一个按钮控件“Button1”到窗体“Form1”上,设置“Label1”和“Label2”的“Caption”属性值分别为“鼠标X坐标值:”和“鼠标Y坐标值:”;设置“Edit1”和“Edit2”的“Text”属性都为“0”;设置“Button1”的“Caption”属性为“退出”。根据自己的喜好安排好各控件在窗体中的布局。选择菜单“FileSave As”,另存程序文件“Unit1.cpp”为“xyp.cpp”;选择“FileSave Project As”,另存工程文件为“xy.bpr”。

    (2) 从控件板的“Win32”页拖动一个状态条控件“StatusBar1”到窗体“Form1”的底部(自动),点击其“Panels”属性,所示的三个小面板,其中一个放提示信息,另外两个分别存放鼠标的X和Y坐标值。

    (3) 利用对象观察器设置“Form1”的“OnMouseMove”(鼠标在窗体上移动时触发该消息)消息响应函数为“MouseMove()”,单行编辑框“Edit1”和“Edit2”的“OnChange”消息响应函数同为“EditChange()”,标准按钮“Button1”的“OnClick”消息响应函数为“ExitButton()”。

    (4) 转入代码编辑器,在“xyp.cpp”中键入如下程序代码:

    void __fastcall TForm1::MouseMove(TObject *Sender, TShiftState Shift,int X, int Y)

    {

    //该程序段用于在状态条中的第二个小面板(Item[1])中显示鼠标的X坐标值,第三个小

    //面板(Item[2])中显示鼠标的Y坐标值。IntToStr()函数用于把整型坐标值转换为字符型。

    StatusBar1->Panels->Items[1]->Text = IntToStr(X);

    StatusBar1->Panels->Items[2]->Text = IntToStr(Y);

    void __fastcall TForm1::ExitButton(TObject *Sender)

    {Close();//关闭应用程序}

    void __fastcall TForm1::EditChange(TObject *Sender)

    {

    //调用API函数SetCursorPos()(C++ Builder中可以直接调用)设置鼠标位置,ToInt()//用于把字符型的值转换为整型值。读者要留意这种C++ Builder中所特有的转换方法。

    SetCursorPos(Edit1->Text.ToInt(),Edit2->Text.ToInt())

;

    }

    位图按钮控件位于Additional页,它提供了同标准按钮一样的功能,但它能在按钮上贴上一幅位图,其主要属性有:

    Glyph:浮雕,单击该属性会弹出一个“Picture Editor”对图(510cb17.Jpg )

所示。

    Hint:当鼠标停留在该控件上一段时间后所弹出的一小段提示信息。

    Layout:用于决定位图贴在按钮的哪个位置。(blGlyphBottom:位于按钮标题的下方;blGlyphLeft:位于按钮标题的左方;blGlyphRight:位于按钮标题的右方;blGlyphTop:位于按钮标题的上方。)

    快速按钮(SpeedButton)是一种新型的按钮控件,它具有一般按钮的属性和方法,另外除了可以在按钮上添加文字标题外,还可以在按钮表面设定不同图像(这点有别于位图按钮,它只能设定一幅图像),用于代表不同的按钮状态(如选中、无效等)。一般把若干个快速按钮都集中在一个工具条(ToolBar)或面板(Panel)上,使用户可以快速地执行一些常用命令。其主要属性有:

    AllowAllUp:全部弹起。当该属性设为true时,属于同一组(通过设置GroupIndex属性为相同值)的快捷按钮可以同时处于弹起状态,即所有按钮均未被选中。

    Down:按钮是否处于按下状态。

    Glyph:点击该属性弹出“Picture Editor”对话框,用于装入一幅位图,然后把该位图分成四幅小位图,每幅小位图代表不同的按钮状态。这就要求“Glyph”属性设定的位图必须包含四幅相同大小尺寸的小位图,并且这些小位图必须紧密相连且在同一水平线上。

    NumGlyphs:设定每个按钮对应的小位图的个数。

    Flat:设定快速按钮的平面效果。设定该属性为true,当鼠标不在按钮上时,该按钮呈现平面状态;当鼠标移到按钮之上时,按钮马上突了出来。当Flat为false时,则没有这种效果。

    工具条按钮(ToolBar)(简称工具条)通常作为工具按钮(tool buttons)或其它按钮的一个容器,以便对其进行统一管理。一般情况下可以在工具条上产生工具按钮(在工具条控件上单击鼠标右键,选择弹出式菜单中的“New Button”或“New Separator”,则可以产生一系列的工具按钮或分割线)或放置快速按钮,以便对应用程序进行更加直接的控制(它一般是一些菜单的快捷方式),其主要属性有:

    Flat:工具条上的工具按钮或其它控件是否具有平面特性。

    Images:工具条上的工具按钮所对应的图像系列。它一般对应一个ImageList控件。    Wrapable:工具条上的按钮是否可以自动换行,产生一个对齐的新列。

为用工具条产生的一个应用程序界面,它共有四个工具按钮,对应一个“ImageList”控件。

C++ Builder3.0提供了一个Splitter控件来实现对用户窗口的分割,只需拖动该控件到窗体上,就可以实现窗口的任意分割。把面板控件(Panel)拖动到窗体上,设置其对齐方式,然后把Splitter控件拖动到面板控件的边缘,设置其对齐方式与面板控件的对的分割方式为例来介绍其具体操作过程:

    (1) 放置一个面板“Panel1”到窗体“Form1”上,并设置其“Align”属性为“alLeft”,然后在“Panel1”的右边界处放置一个“Splitter”控件,其“Align”属性为“alLeft”。应当使“Splitter”控件的“Left”属性值大于或等于“Panel1”的“Left”值加上其“Width”的值。再设定“Splitter”控件的“Width”属性值为3。

    (2)放置另外一个面板“Panel2”到窗体“Form1”上,并设置其“Align”属性为“alClient”。最后在各面板控件上放置其它所需控件,从而实现了窗口的分割。

    图像控件“TImage”位于“Additional”页,主要用于在某一位置来显示一幅图片。该控件的主要属性有:

    Center:图片是否在控件的居中位置。

    Picture:用于装入图片。

    Stretch:用于图片是否自动伸缩到控件大小。

    下面以实例介绍上述几个控件的用法。

    假如设计一个图像放大、缩小的演示程序,可以选择任意一幅位图进行演示。

    (1) 拖动一个面板(Panel)控件到窗体“Form1”上,设置其“Align”属性为“alTop”,让其充当工具条控件。然后拖动四个快速按钮控件到面板上,设置其“Caption”属性分别为“打开”、“放大”、“缩小”和“退出”,设置其“Flat”属性为“true”,“Layout”属性为“blGlyphBottom”。最后用“Glyph”属性为各个快速按钮设置图像。

    (2) 然后拖动一个图像控件和一个“OpenDialog”(打开文件对话框)控件到窗体之上;设置“Form1”的“Caption”属性为。

    (3) 另存程序文件“Unit1.cpp”为“imageio.cpp”,另存工程文件为“image.bpr”。转入代码编辑器,在程序“imageio.cpp”中键入如下代码:

    void __fastcall TForm1::SpeedExitClick(TObject *Sender)

    {Close();//关闭应用程序}

    void __fastcall TForm1::SpeedOpenClick(TObject *Sender)

    {//利用打开文件对话框为图像控件装入位图。

    Image1->Stretch = true;//图像大小随图像框的大小而改变

    OpenDialog1->Filter = “Bmp files (*.bmp)*.bmp”;//文件过滤器中只装入位图文件

    if(OpenDialog1->Execute())

    Image1->Picture->LoadFromFile(OpenDialog1->FileName);

    }

    void __fastcall TForm1::SpeedInClick(TObject *Sender)

    {//图像的长和宽分别增加10各象素

    Image1->Height=Image1->Height+10;

    Image1->Width=Image1->Width+10;

    }

    void __fastcall TForm1::SpeedOutClick(TObject *Sender)

    {//图像的长和宽分别减少10各象素

    Image1->Height=Image1->Height-10;

    Image1->Width=Image1->Width-10;

    }

用“打开”按钮选择一幅位图,用“放大”或“缩小”按钮对改位图进行任意大小的缩放操作。最后设计一个类似Win95“开始”菜单中的“运行”功能基本.

    该应用程序是进程应用程序。进程是装入内存并准备执行的程序,它是资源分配的独立单位。进程有代码、数据,该进程中的线程可用的其他系统资源,如文件、管道和同步对象组成。通过为外部可执行程序创建进程,从而可以在自己的应用程序中调用外部可执行程序。创建进程应使用Windows的API函数“CreateProcess()”,其具体用法和内部所涉及到的数据结构,读者可以参考其他书籍。

    在“Open”标签所对应的编辑框内输入可执行文件的名称(包括路径),单击“Run”按钮,就可运行该外部可执行文件。也可以单击“Browse”按钮,利用打开文件对话框选择外部可执行文件并运行它。

    拖动如下所示的控件到窗体上,并设置其属性:

    控件名称   属性     设定值

    From1(窗体)Caption   Process Programming Demo

    Label1 (标签)    Caption   Open:

    Edit1(编辑框)    Text

    OpenDialog1(打开文件对话框)

    Button1(按钮)    Caption    Run

    Button2(按钮)    Caption    Exit

    Button3(按钮)    Caption    Browse

    然后在程序中键入代码。

    在事件Button1Click中添加如下代码(按“Run”按钮时的响应函数):

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    STARTUPINFO StartInfo;

    PROCESS_INFORMATION ProcessInformation;

    StartInfo.cb=sizeof(STARTUPINFO);

    StartInfo.lpDesktop=NULL;

    StartInfo.lpReserved=NULL;

    StartInfo.lpTitle=NULL;

    StartInfo.dwFlags=STARTF_USESHOWWINDOW;

    StartInfo.cbReserved2=0;

    StartInfo.lpReserved2=NULL;

    StartInfo.wShowWindow=SW_SHOWNORMAL;

    //为外部可执行程序创建进程,其中的可执行文件名由Edit1编辑框提供。

    BOOL bReturn=CreateProcess(NULL,Edit1->Text.c_str(),NULL,NULL,

    FALSE,NULL,NULL,NULL,&StartInfo,

    &ProcessInformation);

    if(!bReturn)

    {

    //当输入可执行文件名无效时,弹出信息框,然后控制焦点停留在编辑框上。

    Application->MessageBox(“你没有指定可执行文件”,“C++ Builder MessageBox”,

    MB_OKCANCEL +MB_DEFBUTTON1);

    Edit1->SetFocus();

    }

    }

    在事件Button2Click中添加如下代码:

    void __fastcall TForm1::Button2Click(TObject *Sender)

    {Close();}//按“Exit”按钮时,程序退出。

    在事件Button3Click中添加如下代码:

    void __fastcall TForm1::Button3Click(TObject *Sender)

    {

    OpenDialog1->Execute();//执行打开文件对话框

    Edit1->Text=OpenDialog1->FileName;//把选中的可执行文件名返回给编辑框。

    }

    运行该程序,然后利用该程序调用Windows的计算器外部程序

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:8,734.37500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号