C++ Builder编程指南2
副标题#e#
三、常用控件的利用与编程
静态文本是用户无法直接改变(不行编辑)的文本,措施可以在运行时刻来改变它,凡是起标注和提示浸染,它位于控件板的“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:鼠标移动时的响应事件。
#p#副标题#e#
单行编辑框控件用来吸收来自用户的单行可编辑输入,它位于控件板的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”属性为“退出”。按照本身的爱好布置好各控件在窗体中的机关。选择菜单“File|Save As”,另存措施文件“Unit1.cpp”为“xyp.cpp”;选择“File|Save Project As”,另存工程文件为“xy.bpr”。
(2) 从控件板的“Win32”页拖动一个状态条控件“StatusBar1”到窗体“Form1”的底部(自动),点击其“Panels”属性,所示的三个小面板,个中一个放提示信息,别的两个体离存放鼠标的X和Y坐标值。
#p#分页标题#e#
(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。
#p#分页标题#e#
(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中添加如下代码:
#p#分页标题#e#
void __fastcall TForm1::Button3Click(TObject *Sender)
{
OpenDialog1->Execute();//执行打开文件对话框
Edit1->Text=OpenDialog1->FileName;//把选中的可执行文件名返回给编辑框。
}
运行该措施,然后操作该措施挪用Windows的计较器外部措施