講稿4-應(yīng)用程序界面設(shè)計(jì)1.ppt_第1頁
講稿4-應(yīng)用程序界面設(shè)計(jì)1.ppt_第2頁
講稿4-應(yīng)用程序界面設(shè)計(jì)1.ppt_第3頁
講稿4-應(yīng)用程序界面設(shè)計(jì)1.ppt_第4頁
講稿4-應(yīng)用程序界面設(shè)計(jì)1.ppt_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Borland C+ Builder 程序設(shè)計(jì)基礎(chǔ),2009.7 ,1,主要內(nèi)容:,Windows程序設(shè)計(jì)基礎(chǔ) Borland C+ Builder 6.0 集成開發(fā)環(huán)境 應(yīng)用程序的用戶界面元素 復(fù)雜窗體設(shè)計(jì)和對話框 應(yīng)用程序框架設(shè)計(jì) 文件與目錄處理,2,應(yīng)用程序界面設(shè)計(jì)1,菜單 工具欄與狀態(tài)行 對話框,菜 單,菜單設(shè)計(jì)器和菜單組件 MainMenu組件位于組件面板的Standard頁上,將它放入一個應(yīng)用程序的窗體,然后我們就可以利用菜單設(shè)計(jì)器(Menu Designer)設(shè)計(jì)菜單了。,菜單設(shè)計(jì)器是BCB提供的一個可視化工具,使用起來直觀簡便。右擊窗體中的MainMenu組件,出現(xiàn)該組件的快捷

2、菜單,其中第一項(xiàng)就是“Menu Designer”。選擇該項(xiàng)就打開了菜單設(shè)計(jì)器,如圖3-1所示。BCB提供的另一種菜單組件是下拉菜單(PopupMenu),它也可以用Menu Designer來設(shè)計(jì)。兩種菜單中的各個菜單項(xiàng)都是TMenuItem類的對象,它們是由Menu Designer在設(shè)計(jì)過程中添入到菜單組件中去的,如圖3-2所示。,圖3-1 MainMenu 的快捷菜單,圖3-2 在Menu Designer中設(shè)計(jì),在Menu Designer中的操作主要用鼠標(biāo)。當(dāng)選中某個菜單項(xiàng)時,Object Inspector會切換到對應(yīng)該項(xiàng)的MenuItem對象,此時可輸入它的Caption屬性,

3、也就是菜單項(xiàng)的名稱。 若要刪除某菜單項(xiàng),可在Menu Designer內(nèi)選中該項(xiàng)后按Delete鍵,也可右擊該菜單項(xiàng)打開它的MenuItem快捷菜單,再選該菜單上的Delete項(xiàng)。 若要插入菜單項(xiàng),可在選中插入位置后按Insert鍵,也可右擊該菜單項(xiàng)打開它的MenuItem快捷菜單,再選該菜單上的Insert項(xiàng)。若要移動菜單項(xiàng)的位置可以用鼠標(biāo)進(jìn)行拖曳完成。,此外,還可用MenuItem的快捷菜單上的Create SubMenu選項(xiàng)為菜單項(xiàng)增加一個子菜單,這樣就可構(gòu)建任意層數(shù)的菜單系統(tǒng)。如果要在程序運(yùn)行中動態(tài)地增減菜單項(xiàng),則可在程序中調(diào)用TMenuItem對象的Add 和Delete方法。 根據(jù)

4、菜單在應(yīng)用程序中的作用,它的選項(xiàng)常被指派執(zhí)行某項(xiàng)功能或操作。BCB中的MenuItem對象都有OnClick事件,為該事件編寫的代碼即被指派到菜單項(xiàng)對應(yīng)的操作中。在Menu Designer中雙擊菜單項(xiàng)即可打開對應(yīng)的OnClick事件代碼段;在窗體設(shè)計(jì)區(qū)中單擊菜單項(xiàng)也能打開OnClick事件代碼段。當(dāng)然,還可以在Object Inspector中打開MenuItem的OnClick事件。,下面是菜單組件的常用屬性。 1AutoMerge屬性 AutoMerge屬性用于菜單的合并,當(dāng)子窗體上菜單的該屬性為true時,則在執(zhí)行程序中會將子窗體上的菜單自動合并到它的父窗體的菜單上。在該屬性不為tru

5、e時,用戶仍可執(zhí)行Merge方法將兩個菜單合并。UnMerge方法則將已合并的菜單拆分。,2Caption 屬性 菜單項(xiàng)上的文字就是該菜單項(xiàng)的Caption屬性值。缺省的BCB會將該Caption作為菜單項(xiàng)的Name,但如果Caption中有漢字,則菜單項(xiàng)的Name被缺省設(shè)置為N1、N2等。 如果在Caption的某個字母前加上一個 /- void _fastcall TForm1:ToolBar1Click(TObject *Sender) /當(dāng)選擇“ToolBar”時能切換該項(xiàng)的Checked屬性 ToolBar1-Checked = ! (ToolBar1-Checked); /使該菜單

6、項(xiàng)的Checked屬性值取反 /-,void _fastcall TForm1:FileEnabled1Click(TObject *Sender) /當(dāng)選擇 “File Enabled”時使“File”下拉菜單有效,并使“File Enabled”菜單項(xiàng)失效以及“File Disabled”菜單項(xiàng)有效 File1-Enabled = true; FileEnabled1-Enabled = false; FileDisabled1-Enabled = true; /- void _fastcall TForm1:FileDisabled1Click(TObject *Sender) /當(dāng)選擇

7、 “File Disabled”時使“File”下拉菜單失效,并使“File Disabled”菜單項(xiàng)失效以及“File Enabled”菜單項(xiàng)有效 File1-Enabled = false; FileEnabled1-Enabled = true; FileDisabled1-Enabled = false;, /- void _fastcall TForm1:HideHelp1Click(TObject *Sender) /當(dāng)選擇 “Hide Help”時使“Help”項(xiàng)不可見 Help1-Visible = false; ShowHelp1-Enabled = true; HideHe

8、lp1-Enabled = false; /-,void _fastcall TForm1:ShowHelp1Click(TObject *Sender) /當(dāng)選擇“Show Help”時使“Help”恢復(fù)為可見 Help1-Visible = true; ShowHelp1-Enabled = false; HideHelp1-Enabled = true; /- void _fastcall TForm1:New1Click(TObject *Sender) /當(dāng)選擇 “New”、“Open”或“Save”時分別出現(xiàn)一個對話框提示相應(yīng)的功能“Not Completed” ShowMessa

9、ge (New Has Not Completed); /調(diào)用通用函數(shù)ShowMessage輸出信息 ,/- void _fastcall TForm1:Open1Click(TObject *Sender) ShowMessage (Open Has Not Completed); /調(diào)用通用函數(shù)ShowMessage輸出信息 ,/- void _fastcall TForm1:Save1Click(TObject *Sender) ShowMessage (Save Has Not Completed); /調(diào)用通用函數(shù)ShowMessage輸出信息 ,運(yùn)行該程序,選擇File Disab

10、led后的畫面如圖3-4所示,選擇Hide Help后的畫面如圖3-5所示,選擇ToolBar后的畫面如圖3-6所示,再次選擇ToolBar后的畫面如圖3-7所示。在選擇了FileNew后彈出的消息框如圖3-8所示。,圖3-4 選擇File Disabled,圖3-5 選擇Hide Help,圖3-6 選擇ToolBars使Checked被勾選,圖3-7 再次選擇ToolBars取消Checked勾選,圖3-8 選擇FileNew 彈出消息框,工具欄與狀態(tài)行,大部分Windows應(yīng)用程序都有一個工具欄,利用工具欄上的圖形按鈕可加快操作速度,一般工具欄位于窗體的頂部。在BCB中有許多方法可設(shè)計(jì)出

11、不同風(fēng)格的工具欄,其中較簡單直接的方法是使用Panel和SpeedButton控件進(jìn)行的。,面板和加速按鈕 1面板 面板(Panel)控件位于組件面板的Standard頁上的倒數(shù)第二個位置,它是一個容器組件,即可以將其它組件放入面板。它的主要功能就是制作工具欄和狀態(tài)欄。以下是面板的常用屬性。 1) Align屬性 為設(shè)置面板在窗體上的位置,可以使用它的Align屬性。該屬性取值范圍為alTop、alRight、alBottom、alLeft、alClient和alNone。,缺省值為alNone,此時可用鼠標(biāo)操作確定其位置和尺寸。當(dāng)作為工具欄使用時,面板常被放置在窗體頂部位于菜單條之下,我們可

12、以用alTop指定該位置。這樣,即使窗體尺寸改變,面板也能準(zhǔn)確定位,而且能自動改變寬度以保持橫貫整個窗體。alRight、alLeft、alBottom和alTop類似,分別適合將面板定位到窗體的右、左和底部。alClient則定位在整個窗體的客戶區(qū)。,2) BevelInner和BevelOuter屬性 BevelInner和BevelOuter這兩個屬性決定了面板的外觀,適當(dāng)搭配二者的值可以產(chǎn)生不同的三維效果。它們的取值范圍為bvLowered、bvNone、bvRaised和bvSpace。缺省值BevelInner=None, BevelOuter=Raised。 3) Caption

13、屬性 面板也有Caption屬性,因此可在面板上顯示文字。此時,它的功能類似于Label組件,但可以制作出三維效果,簡單的狀態(tài)欄就是利用面板的Caption制作的。在用作工具欄時,一般應(yīng)將Caption置為空白。 4) Visible屬性 Visible屬性為false時,可隱藏面板及面板上的組件。,2加速按鈕 加速按鈕(SpeedButton)是位于Additional頁上第二個位置的組件。它與按鈕類似,但可以在表面上放置圖形。與按鈕或位圖按鈕(BitButton)相比,它沒有窗口句柄,不消耗Windows資源,繪制速度也更快一點(diǎn)。所以,非常適合用作工具欄上的工具按鈕。加速按鈕有以下主要屬性

14、。,1) Glyph屬性 Glyph屬性指定一個圖像文件放到加速按鈕的表面。點(diǎn)擊Object Inspector中該屬性右側(cè)的“.”按鈕就打開Picture Editor對話框,可選“Load.”按鈕指定一個圖片文件,按“OK”完成裝入,如圖3-9所示。一般應(yīng)裝入小型位圖或圖標(biāo)(2020像素左右),位圖文件既可通過各種途徑收集得到,也可利用BCB的Image Editor工具自行繪制。在BCB的目錄C:Program FilesCommon FilesBorland SharedImagesButtons下就有許多按鈕圖標(biāo)。,圖3-9 輸入Glyph屬性時選擇位圖,2) NumGlyphs屬性

15、 NumGlyphs屬性可輸入數(shù)字14,缺省值為1,它表示加速按鈕中包含的位圖的數(shù)目。當(dāng)該數(shù)目為2時,第一個位圖為按鈕的標(biāo)準(zhǔn)狀態(tài),第二個位圖用于按鈕失效時。當(dāng)該數(shù)目為4時,第一、二個位圖作用同前,第三個位圖用于單擊按鈕時,第四個位圖用于按鈕持續(xù)保持按下狀態(tài)時。前面提到Buttons目錄下有許多按鈕的位圖,如果打開這些位圖觀察可以發(fā)現(xiàn)它們都是“兩位一體”的,即圖片中橫向并排著兩個同樣尺寸的類似圖形。,其實(shí)這些圖形就是專門被定制成可以用作NumGlyphs等于2時的按鈕表面貼圖。類似地,如果用于NumGlyphs等于4時的貼圖,圖片中必須包含從左到右排列的四個同樣尺寸的小圖形。,3) Hint 和

16、ShowHint屬性 Hint 和ShowHint屬性用于產(chǎn)生提示,該兩個屬性并非加速按鈕專有。但由于僅靠一幅簡單的位圖難以表達(dá)復(fù)雜的意義,加速按鈕更加需要有自我提示的功能。Hint是字符串類型的屬性,應(yīng)輸入提示的內(nèi)容;ShowHint則是bool型,當(dāng)它為true時組件具有提示功能。,工具欄設(shè)計(jì)范例 下面給出一個工具欄程序范例。 【例3-2】 在前面例3-1的基礎(chǔ)上,保留主菜單上的“File”、“Edit”和“Tools”三個下拉菜單,刪去其余菜單項(xiàng)。往該程序窗體內(nèi)放入一個由面板Panel1和三個加速按鈕組成的工具欄。Panel1的Align設(shè)置為alTop;三個加速按鈕的Glyph中分別裝

17、入三個位圖,它們的ShowHint都設(shè)置為true, Hint屬性分別輸入“New”、“Open”和“Save”。,再將菜單項(xiàng)“ToolBar”的Checked屬性設(shè)置為true,表示程序在初始狀態(tài)下顯示工具欄。各菜單項(xiàng)的OnClick基本上與例3-1中相同,但“ToolBar”的OnClick事件中應(yīng)增加改變Panel1的Visible屬性的語句。,程序中,工具欄上三個加速按鈕的功能應(yīng)分別等同于菜單上的“New”、“Open”和“Save”,即它們可以分別與三個菜單項(xiàng)的OnClick事件分享代碼。因此,可按如下方式定義三個按鈕的OnClick事件:選中第一個按鈕,在Object Inspec

18、tor中選Events頁,在OnClick事件右面組合框中選擇New1Click (即菜單項(xiàng)“New”的OnClick事件的名稱),然后對第二、三個按鈕進(jìn)行類似操作,如圖3-10所示。,圖3-10 為加速按鈕選擇OnClick,下面是該范例中惟一需要修改的代碼段: void _fastcall TForm1:ToolBar1Click(TObject *Sender) ToolBar1-Checked = ! ToolBar1-Checked; if (ToolBar1-Checked) Panel1-Visible = true; else Panel1-Visible = false; ,

19、程序運(yùn)行開始時的畫面如圖3-11所示。若把鼠標(biāo)靠近加速按鈕并停留,就會看到提示信息。選擇ToolBar菜單項(xiàng),能打開或關(guān)閉工具欄,圖3-12為工具欄已被關(guān)閉。當(dāng)點(diǎn)擊三個加速按鈕時,與點(diǎn)擊菜單項(xiàng)“New”、“Open”和“Save”時一樣,會出現(xiàn)一個顯示“XXX Has Not Completed”的信息框。我們也可以把組合框、微調(diào)按鈕(UpDown)等控件放到面板組件上,做出一個像Word中那樣有更加復(fù)雜功能的工具欄,如圖3-13 所示。,圖 3-11 程序初始畫面 圖 3-12 工具欄已關(guān)閉,圖3-13 一個復(fù)雜的工具欄,StatusBar組件 通常在Windows應(yīng)用程序的底部有一個狀態(tài)行

20、,用以提供一些系統(tǒng)信息和提示。C+ Builder中我們可以利用面板組件制作狀態(tài)行,但效果較差。本節(jié)中將介紹StatusBar組件,它位于Win32頁上,是非常適合用作狀態(tài)行的。 StatusBar 可以看作是面板的容器,它可包含有若干面板,從左向右排列。其中每個面板都能被獨(dú)立控制,用于顯示一項(xiàng)信息。圖3-14為含有五個面板的StatusBar組件。,下面簡單介紹一下StatusBar的主要屬性。 1Align屬性 用法與面板的Align一樣,但作為狀態(tài)行組件,其缺省值被設(shè)置為alBottom。 2Font屬性 Font屬性可設(shè)置狀態(tài)行中使用的字體,但必須同時設(shè)置UseSystemFont為f

21、alse,否則狀態(tài)行使用系統(tǒng)定義的字體。,圖 3-14 StatusBar組件,3SimplePanel屬性 SimplePanel屬性為true時,StatusBar具有一個簡單面板(Panel)的一切特征,而不能作為面板容器使用。一般,應(yīng)設(shè)置SimplePanel為false。 4Panels屬性 Panels屬性是StatusBar最主要的屬性,它是一個數(shù)組,其中的每個元素代表一個面板。當(dāng)SimplePanel為false時,可點(diǎn)擊Panels屬性值右側(cè)的“.”按鈕打開一個面板設(shè)置對話框,如圖3-15所示。打開該對話框的另一個辦法是右擊StatusBar,當(dāng)出現(xiàn)快捷菜單后,再選擇“Pan

22、els Editor”。,圖3-15 使用Panels Editor,Panels Editor是一個小窗口,開始時為空,每次點(diǎn)擊工具欄上的“New”(左面第一個)按鈕就在窗口中增加一個項(xiàng),相應(yīng)地StatusBar中也增加了一個面板。當(dāng)在Panel Editor中選中某項(xiàng)時,Object Inspector中會切換到與其對應(yīng)的面板,我們就能設(shè)置該面板的Width、Bevel和Alignment等屬性。Bevel屬性與面板的外觀有關(guān),一個狀態(tài)行組件的各個面板可分別有不同的Bevel值。Alignment的可選值為taCenter、taLeftJustify和taRightJustify,分別表示

23、顯示文字的位置為居中、靠左和靠右。,狀態(tài)行設(shè)計(jì)范例 下面給出一個狀態(tài)行設(shè)計(jì)的范例。 【例3-3】 程序的主菜單上有“File”和“Edit”兩項(xiàng),窗體中間放了一個TMemo控件,可輸入文本,窗口底部有一個被分隔為五個部分的狀態(tài)行,如圖3-16所示。這五部分顯示的信息分別為: (1) 時間,顯示為XX:XX:XX; (2) Memo控件中當(dāng)前插入點(diǎn)的位置,它用Y行、X列形式表示,Y、X起始值都是0; (3) Memo中文本的字?jǐn)?shù);,(4) 鍵盤上Insert鍵的狀態(tài),顯示為INS 或空白; (5) 鍵盤上NumLock鍵的狀態(tài),顯示為NUM 或空白。 我們讓前三項(xiàng)居中顯示,后兩項(xiàng)靠左顯示,如圖3

24、-16所示。,圖3-16 程序運(yùn)行時狀態(tài)行中顯示有關(guān)信息,(操作要點(diǎn)將StatusBar控件放入窗體,設(shè)置其Align 為alBottom,SimplePanel 和UseSystemFont為false,并選擇適當(dāng)?shù)淖煮w和顏色。右擊StatusBar打開Panel Editor,五次點(diǎn)擊New工具按鈕添加面板,將五個面板的Width分別設(shè)置為100、100、100、50和50,并將前三項(xiàng)Alignment設(shè)置為taCenter,后兩項(xiàng)設(shè)置為taLeftJustify。,為了能實(shí)時顯示動態(tài)信息,我們需要每隔一小段時間將狀態(tài)行刷新一遍,因此要在Form1中加入一個定時器組件Timer1(位于組件

25、面板上System頁)。我們將該Timer的Interval設(shè)為100,Enabled設(shè)為true,并為Timer1編寫OnTimer事件的代碼如下: void _fastcall TForm1:Timer1Timer(TObject *Sender), AnsiString str1; /顯示時間 TDateTime DateTime =Time ( ); StatusBar1-Panels-Items0 -Text = 時間:+TimeToStr (DateTime); /顯示插入點(diǎn)位置 str1=位置:; str1=str1+IntToStr (Memo1-CaretPos.y)+行;

26、str1=str1+IntToStr (Memo1-CaretPos.x)+列; StatusBar1-Panels-Items1 -Text = str1; /顯示字?jǐn)?shù),str1= Memo1-Lines-Text; StatusBar1-Panels-Items2 -Text = 字?jǐn)?shù):+IntToStr (str1.Length ( ); /顯示NUM狀態(tài) if (GetKeyState (VK_NUMLOCK) StatusBar1-Panels-Items3-Text =NUM; else StatusBar1-Panels-Items3-Text = ; /顯示INS狀態(tài),if (

27、GetKeyState (VK_INSERT) StatusBar1-Panels-Items4-Text =INS; else StatusBar1-Panels-Items4-Text = ; ,【評析】 (1) StatusBar1-Panels-Itemsi-Text 屬性代表狀態(tài)行中第i個面板上的文本,(i=0,1,2,3,4),我們只要將有關(guān)信息放入相應(yīng)的Text屬性即可。 (2) 可用Time函數(shù)取得TDateTime類型的時間信息,再用函數(shù)TimeToStr把它轉(zhuǎn)換為 AnsiString字符串類型。 (3) Memo1-CaretPos.y和Memo1-CaretPos.x為

28、當(dāng)前插入位置。str1=Memo1-Lines-Text取得Memo1中的文本,再用AnsiString 的Length方法求出它的長度,即文本中的字?jǐn)?shù)。,注意:計(jì)算字?jǐn)?shù)時每次回車會增加兩個字(回車符和換行符)。 (4) GetKeyState 是一個API函數(shù),可取到鍵盤上各個鍵的狀態(tài)。 (5) 本例中使用了Timer組件,該組件起到定時控制的作用。它的Interval屬性指定時間間隔,本例中設(shè)置為100,表示每間隔100毫秒(0.1秒)調(diào)用一次時控過程(由OnTimer事件確定)。 注意:設(shè)置Timer的Enabled為true,以啟動Timer的時控功能。,(6) 本例中為了能顯示一些有

29、意義的信息,使用了若干Windows API函數(shù)(在本書提高篇中將較系統(tǒng)地介紹Windows API)。對初學(xué)者來說,如何在各種場合取得所需的狀態(tài)信息,可以是一個逐漸積累的過程。,對 話 框,對話框與模態(tài)窗口 設(shè)計(jì)對話框與設(shè)計(jì)普通的窗體沒什么本質(zhì)區(qū)別,但對話框一般具有如下特征: (1) 在程序中不作為主窗體,通常被缺省命名為Form2或Form3等。在BCB中為了給應(yīng)用程序加入第二個窗體(或第三個窗體等),可選FileNewForm菜單項(xiàng)或點(diǎn)擊相應(yīng)的工具按鈕。,對于有兩個以上(含兩個)窗體的程序,在與主窗體Form1對應(yīng)的Unit1.h(或Unit1.cpp)中一般要加入 #include U

30、nit2.h語句(或執(zhí)行FileInclude Unit Hdr.命令),否則,在Form1中就不能識別Form2中定義的對象。至于是否要在uint2.h中加入 #include Unit1.h,則應(yīng)看具體情況。 (2) 窗口標(biāo)題一般應(yīng)為對話框名稱,窗口內(nèi)沒有主菜單。邊框上無控制按鈕,也不能改變窗口尺寸。要做到這一點(diǎn),較簡單的方法是設(shè)置BorderStyle屬性為bsDialog。,(3) 窗口往往以模態(tài)方式打開,Windows的窗口可定義為模態(tài)窗口或非模態(tài)窗口。當(dāng)應(yīng)用程序打開一個模態(tài)窗口后,只要該窗口未關(guān)閉,就不能對程序中的其它窗口進(jìn)行任何操作,以此方式強(qiáng)制用戶對該模態(tài)窗口作出響應(yīng)。所謂以模

31、態(tài)方式打開即指使打開的窗口成為模態(tài)窗口。 在BCB中一個窗口是否為模態(tài)一般并非取決于其設(shè)計(jì)階段,而是由打開該窗口時使用的方法所確定。如果一個窗口是被Show方法打開的,那么它就是非模態(tài)方式的;如果用ShowModal方法打開窗口,那么該窗口就是模態(tài)的。,信息框 C+Builder中使用ShowMessage和MessageDlg函數(shù)產(chǎn)生標(biāo)準(zhǔn)的Windows信息框,這種信息框是一個模態(tài)窗口。 ShowMessage使用方便但功能較弱,只能顯示一個帶有OK 按鈕的信息框。在例3-1中我們已經(jīng)用過該函數(shù)。 MessageDlg函數(shù)適用范圍更廣。它有四個參數(shù),BCB 對該函數(shù)聲明如下: int_fas

32、tcall MessageDlg(const AnsiString Msg, TMsgDlgType DlgType, TMsgDlgButtons Buttons, int HelpCtx);,Msg參數(shù)指定了顯示的信息。DlgType參數(shù)可指定信息框的類型,該參數(shù)為TmsgDlgType類型,它的取值范圍及含義如表3-1所示。Buttons參數(shù)指定了信息框所包含的按鈕,類型為TmsgDlgButtons,它的取值范圍及含義如表3-2所示。HelpCtx參數(shù)可指定當(dāng)用戶單擊Help按鈕或按F1鍵時所彈出的幫助主題的幫助上下文ID。MessageDlg函數(shù)返回一個整數(shù),代表用戶在對話框中所選的

33、按鈕,該值必定為以下預(yù)定義常數(shù)之一:mrNone、mrAbort、mrYes、mrOk、mrRetry、mrNo、mrCancel、mrIgnore、mrAll。,表3-1 DlgType 參數(shù)的取值,表3-2 Buttons 參數(shù)的取值,下面一段代碼出現(xiàn)一個信息框詢問用戶是否退出程序,若選擇Yes,則關(guān)閉Form1,使程序結(jié)束。代碼運(yùn)行時的畫面如圖3-17所示。 if (MessageDlg (是否退出程序?, mtConfirmation, TMsgDlgButtons ( ) Close ( );,圖3-17 使用MessageDlg 函數(shù),通用對話框組件 在組件面板的Dialog頁上有

34、一組共10個通用對話框組件可供使用。這些對話框?qū)嶋H上是由Windows提供的,BCB把它們包裝了一下,使用更加方便了。其中,最常用的是OpenDialog(打開文件)、SaveDialog(保存文件)、FontDialog(字體)和ColorDialog(顏色)對話框,圖3-18圖3-21為這四個對話框的畫面。另外幾個是OpenPictureDialog(打開圖形)、SavePictureDialog(保存圖形)、PrintDialog(打印)、PrinterSetupDialog(打印機(jī)設(shè)置)、FindDialog(查找)和ReplaceDialog(替換)對話框。,圖3-18 OpenDi

35、alog,圖3-19 SaveDialog,圖3-20 FontDialog,圖3-21 ColorDialog,這些對話框的用法是類似的:先調(diào)用組件的Execute方法打開對話框供用戶操作,當(dāng)操作完成對話框被關(guān)閉后,用戶選定的對象被存放在該組件的相應(yīng)屬性內(nèi)。如操作OpenDialog和SaveDialog對話框所選定的文件名被存放在FileName屬性內(nèi),F(xiàn)ontDialog中選定的字體被存放在Font屬性內(nèi),ColorDialog中選定的顏色則被存放在Color屬性內(nèi)。,【例3-4】 在窗體Form1中放入一個TColorDialog組件ColorDialog1,再放入一個按鈕組件Butt

36、on1。為Button1的OnClick事件編寫如下代碼: void_fastcall TForm1:Button1Click (TObject *Sender) if (ColorDialog1-Execute ( ) Form1-Color = ColorDialog1-Color; ,程序運(yùn)行時,點(diǎn)擊Button1彈出顏色對話框,在對話框中選定顏色并點(diǎn)擊“確定”后,程序使Form1的顏色改變?yōu)樗x顏色。 注意:ColorDialog1-Execute ( ) 函數(shù)返回一個整型值,若用戶在對話框中選定后按“確定”退出則該值為1,若按“取消”退出則為0。因此,根據(jù)用戶是否選中了某種顏色,程序中用if 語句來判定是否需要設(shè)置窗體的顏色。具體設(shè)置窗體顏色則是通過“Form1-Color = ColorDialog1-Color;”語句完成的。,習(xí) 題,1. 試按

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論