日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

VCL组件之按钮

發(fā)布時(shí)間:2025/5/22 c/c++ 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VCL组件之按钮 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

VCL中包含好幾種類(lèi)型的按鈕,盡管它們不都是基于標(biāo)準(zhǔn)Windows按鈕,但仍把所有按鈕類(lèi)型列出來(lái)。在看具體的按鈕組件之前先復(fù)習(xí)下一些基本知識(shí)。

Note

設(shè)置按鈕的Caption屬性時(shí),使用&符號(hào),就像設(shè)置菜單項(xiàng)的Caption屬性一樣,&符號(hào)后面的字符會(huì)有下劃線(xiàn),作為按鈕的加速鍵。

1、按鈕屬性

按鈕屬性只有四個(gè)顯著屬性,如下:

  • ModalResult
  • Default
  • Cancel
  • Enabled

(1)ModalResult屬性

此屬性用于為顯示ShowModal的窗體提供內(nèi)部的關(guān)閉窗體。ModalResult缺省設(shè)置為mrNone(0)。這個(gè)值用于窗體上的普通按鈕并且不關(guān)閉窗體。如果對(duì)ModalResult使用任何非零值,則點(diǎn)擊按鈕會(huì)關(guān)閉窗體并返回ModalResult值。例如,把按鈕放置到窗體上,設(shè)置ModalResult屬性為mrOK,則點(diǎn)擊按鈕會(huì)關(guān)閉窗體,從ShowModal的返回值為mrOK(1),例如下面的代碼:

varRes: Integer; beginRes := MyForm.ShowModal;if Res = mrOK then{ do something};if Res = mrCancel thenExit; end;

VCL ModalResult常量

常量
mrNone0
mrOK1
mrCancel2
mrAbort3
mrRetry4
mrIgnore5
mrYes6
mrNo7
mrAll8
mrNoToAll9
mrYesToAll10

Note

不必對(duì)按鈕用一個(gè)預(yù)定義常量,可使用任何喜歡的值。例如某對(duì)話(huà)框上使用多個(gè)按鈕實(shí)現(xiàn)關(guān)閉,對(duì)每個(gè)按鈕可指定不同的ModalResult值(如100,150,200等),這樣就知道哪個(gè)按鈕關(guān)閉了對(duì)話(huà)框。任何非零值都可以關(guān)閉對(duì)話(huà)框。

我們做了一個(gè)測(cè)試程序,測(cè)試不同ModalResult的使用。此程序含有多個(gè)按鈕,點(diǎn)擊按鈕時(shí),ModalResult會(huì)在主窗體上返回值,代碼中有詳細(xì)解釋,請(qǐng)?jiān)敿?xì)閱讀,還有一些比較精巧的技巧。

主界面如下:

圖1

1、點(diǎn)擊“顯示Buttons窗口”后彈出對(duì)話(huà)框如下:

圖2

2、點(diǎn)擊“顯示BitBtns窗口”后彈出對(duì)話(huà)框如下:

圖3

以上代碼均在Delphi7中測(cè)試通過(guò),按鈕ModalResult屬性測(cè)試程序下載:ButtonTestProgram.rar

(2)Default屬性

對(duì)于缺省按鈕,如果希望用戶(hù)直接回車(chē)就相當(dāng)于單擊了這個(gè)按鈕,可以將它Default屬性設(shè)置為T(mén)rue。但是當(dāng)用戶(hù)在回車(chē)前按Tab鍵或方向鍵選擇了其他按鈕的話(huà),該按鈕就取得了輸入焦點(diǎn),那么回車(chē)觸發(fā)的就是這個(gè)按鈕的響應(yīng)事件。

缺省按鈕是設(shè)置為BS_DEFPUSHBUTTON類(lèi)型的按鈕,通常是OK按鈕。Default屬性用于設(shè)置按鈕為窗體的缺省按鈕。此屬性的缺省值為False。要把按鈕做成缺省按鈕,設(shè)置它的Default屬性為T(mén)rue。

Note

當(dāng)用戶(hù)按Enter鍵盤(pán)關(guān)窗體時(shí),缺省按鈕的OnClick處理程序會(huì)在窗體關(guān)閉前被調(diào)用。

(3)Cancel屬性

Cancel屬性使用Esc鍵,與Default屬性使用Enter鍵工作大體相同。若Cancel屬性設(shè)置為T(mén)rue,當(dāng)用戶(hù)按Esc鍵關(guān)閉窗體時(shí),從ShowModal的返回值為按鈕的ModalResult值。若沒(méi)有按鈕的Cancel屬性設(shè)為T(mén)rue,用戶(hù)按Esc鍵關(guān)閉窗體會(huì)返回mrCancel。

Note

點(diǎn)擊系統(tǒng)按鈕關(guān)閉或按Alt+F4關(guān)閉窗體會(huì)導(dǎo)致從ShowModal返回mrCancel。然而按Esc鍵會(huì)返回Cancel設(shè)置為T(mén)rue的按鈕的ModalResult屬性,在窗體關(guān)閉時(shí),該Cancel屬性為T(mén)rue的按鈕OnClick事件處理程序被調(diào)用。如果用系統(tǒng)按鈕關(guān)閉或Alt + F4關(guān)閉窗體,沒(méi)有OnClick事件被調(diào)用。一定要考慮到用戶(hù)使用窗體的不同操作方式。

?

Note

可以把多個(gè)按鈕的Default屬性設(shè)為T(mén)rue。類(lèi)似地,可以把多個(gè)按鈕的Cancel屬性設(shè)為T(mén)rue。當(dāng)是,當(dāng)用戶(hù)在鍵盤(pán)按Enter鍵時(shí),在具有Default屬性為T(mén)rue的且Tab順序?yàn)榈谝粋€(gè)的按鈕被激活。類(lèi)似地,當(dāng)用戶(hù)按ESC鍵關(guān)閉窗體時(shí),從ShowModal返回值將是具有Cancel屬性為T(mén)rue的且Tab順序中第一個(gè)按鈕的ModalResult值。

(4)Enabled屬性

這個(gè)屬性經(jīng)常對(duì)按鈕使用,允許或禁止按鈕依賴(lài)于程序或特定窗體的當(dāng)前狀態(tài)。當(dāng)按鈕被禁止時(shí)候(它的Enabled屬性為False),其文本是灰色的,按鈕不起作用。在用位圖的按鈕的情形(BitBtn和SpeedButton)時(shí),圖像也自動(dòng)變灰下來(lái)。

?

OnClick是按鈕的重要事件。當(dāng)用戶(hù)單擊按鈕、在按鈕有輸入焦點(diǎn)時(shí)按下空格鍵、按下按鈕的快捷鍵、對(duì)默認(rèn)按鈕使用回車(chē)鍵、對(duì)取消按鈕使用Esc鍵等情況下,按鈕的OnClick事件都會(huì)被觸發(fā)。

2、Button組件

TButton位于Standard組件面板上,是封裝在Delphi組件庫(kù)中的一個(gè)普通按鈕組件。按鈕很容易使用。在窗體上插入一個(gè)Button對(duì)象,給其Caption屬性設(shè)置按鈕標(biāo)題。為了在用戶(hù)單擊按鈕時(shí)完成動(dòng)作,為按鈕的OnClick事件創(chuàng)建一個(gè)事件處理程序。TButton繼承關(guān)系如下:

缺省放置在窗體上的Button按鈕,高度為25像素,寬度為75像素。

3、BitBtn組件

位圖按鈕TBitBtn位于Additional組件面板上。它的工作方式類(lèi)似于Button組件,但可以在按鈕上顯示一個(gè)圖標(biāo),這樣就更便于用戶(hù)理解該按鈕的作用。BitBtn組件上可以同時(shí)顯示文本和位圖,比一般按鈕更直觀。TBitBtn類(lèi)繼承關(guān)系如下:

下面介紹下該組件的特有的幾個(gè)屬性:

(1)Glyph屬性和NumGlyphs屬性

Glyph屬性指定了顯示在按鈕上的自定義位圖。

NumGlyphs屬性指定位圖按鈕使用的自定義位圖的個(gè)數(shù),取值為1~4之間,如下圖所示,但這幾幅位圖實(shí)際上保存在一個(gè)用Glyph屬性指定的文件中。要使用自定義位圖,必須首先將Kind屬性設(shè)置為bkCustom。你可以在運(yùn)行期給Glyphs指定一個(gè)TBitmap對(duì)象,或者在設(shè)計(jì)期時(shí)指定,做法如下:在Object Inspector中單擊Glyph屬性右側(cè)的“…”按鈕,彈出Picture Editor窗口,單擊“Load”按鈕可以調(diào)入一個(gè)位圖文件。由于這個(gè)文件最多包含4個(gè)同樣大小且組成一排的位圖,因此這個(gè)位圖文件的長(zhǎng)度必定是寬度像素值的1到4倍。

位圖按鈕的四種狀態(tài)圖標(biāo)

位圖位置按鈕狀態(tài)說(shuō)明
1彈起該位圖會(huì)顯示在彈起狀態(tài)下的按鈕上
2禁用該位圖通常呈現(xiàn)灰色來(lái)表示按鈕不可用
3單擊當(dāng)用戶(hù)單擊按鈕時(shí)顯示該位圖。松開(kāi)左鍵時(shí),恢復(fù)到第一個(gè)位圖
4按下當(dāng)按鈕保持按下的狀態(tài)時(shí)顯示該位圖

當(dāng)該文件只包含一幅位圖時(shí),位圖按鈕就不會(huì)對(duì)該位圖做一些變化來(lái)表示其他狀態(tài)(按下?tīng)顟B(tài)不會(huì)改變)。如果你對(duì)這樣的按鈕效果不滿(mǎn)意,只要自己添加其他三個(gè)位圖啦。

Note

在NumGlyphs屬性中說(shuō)明的位圖個(gè)數(shù)必須和實(shí)際個(gè)數(shù)相同。

位圖左下角(The lower left )點(diǎn)處像素的顏色是默認(rèn)透明色。如果不想用左上角像素作為透明色,可以設(shè)置TBitmap對(duì)象的TransparentMode屬性為tmFixed,然后設(shè)置TransparentColor屬性為選擇的透明色。

Delphi標(biāo)準(zhǔn)按鈕的位圖尺寸為15X15,該尺寸很適合標(biāo)準(zhǔn)按鈕的25像素高度。當(dāng)然位圖可以是任意高度,但BitBtn組件不根據(jù)位圖來(lái)設(shè)置按鈕尺寸。使用較大的位圖時(shí),就必須相應(yīng)地設(shè)置按鈕尺寸。

(2)Kind屬性

確定位圖按鈕的類(lèi)型,缺省值為bkCustom。

它能從幾個(gè)預(yù)定義按鈕種類(lèi)中選擇,選擇后會(huì)導(dǎo)致以下屬性自動(dòng)改變:

  • Glyph屬性自動(dòng)改變
  • 根據(jù)選定的按鈕種類(lèi)自動(dòng)改變Cancel屬性和Default屬性
  • Caption屬性自動(dòng)改變
  • ModalResult屬性自動(dòng)改變
  • 窗體上按鈕外觀自動(dòng)更新
  • 在上面的“按鈕ModalResult屬性測(cè)試程序”中顯示了一個(gè)BitBtns窗口,此窗體包含了每一種類(lèi)型的BitBtn按鈕。請(qǐng)自行下載測(cè)試。

    (3)Layout屬性

    決定位圖出現(xiàn)在按鈕上的位置,有blGlyphBottom、blGlyphLeft、blGlyphRight或blGlyphTop四種取值,默認(rèn)值為blGlyphLeft。

    (4)Margin屬性

    決定位圖與按鈕邊界間隔的像素?cái)?shù),默認(rèn)為-1,即位圖居中。

    (5)Spacing屬性

    決定標(biāo)題與位圖之間間隔的像素?cái)?shù),默認(rèn)值為4。

    4、SpeedButton組件

    TSpeedButton也稱(chēng)為“加速按鈕”,位于Additional組件面板上。SpeedButton對(duì)象通常出現(xiàn)在應(yīng)用程序的工具欄上,但也可以單獨(dú)當(dāng)按鈕使用。它與Button及BitBtn不同,它不是窗口組件,沒(méi)有窗口句柄及相關(guān)Windows結(jié)構(gòu),所以帶有十幾個(gè)SpeedButton的窗體比帶有十幾個(gè)標(biāo)準(zhǔn)按鈕的窗體占用較少的內(nèi)存。SpeedButton比標(biāo)準(zhǔn)控件顯示速度更快。SpeedButton不能接受輸入焦點(diǎn)。另一個(gè)優(yōu)點(diǎn)是可作為開(kāi)/關(guān)按鈕,當(dāng)按下這樣的按鈕時(shí)它就保持按下?tīng)顟B(tài)。

    另一方面,SpeedButton組件于BitBtn組件有幾個(gè)公用的屬性。SpeedButton處理Glyph屬性的方式與BitBtn組件一樣。缺省地SpeedButton按鈕時(shí)正方形25 x 25像素,SpeedButton可以是任意喜歡的尺寸,可以包含文本。

    TSpeedButton類(lèi)繼承關(guān)系如下:

    下面對(duì)SpeedButton某些具體屬性進(jìn)行介紹:

    GroupIndex屬性、AllowAllUp屬性及Down屬性

    通常屬于同一組(GroupIndex屬性相同)的加速按鈕以互斥的方式工作。比如當(dāng)一個(gè)按鈕處于按下?tīng)顟B(tài)時(shí),所有其他的按鈕會(huì)彈起。當(dāng)AllowAllUp屬性為T(mén)rue時(shí),在一組中的加速按鈕可以同時(shí)處于彈起狀態(tài)。單擊一個(gè)處于按下?tīng)顟B(tài)的按鈕時(shí),該按鈕彈起,而其他按鈕依然處于彈起狀態(tài);而如果AllowAllUp屬性為False時(shí),則在同一時(shí)間該組內(nèi)必須有一個(gè)按鈕處于按下?tīng)顟B(tài)。單擊按下?tīng)顟B(tài)的按鈕也不會(huì)讓它彈起。當(dāng)在設(shè)置某個(gè)加速按鈕的AllowAllUp屬性時(shí),其他與該按鈕同組的加速按鈕的AllowAllUp屬性也會(huì)自動(dòng)發(fā)生相同的改變。

    Down屬性用來(lái)判斷按鈕處于何種狀態(tài),當(dāng)為T(mén)rue時(shí),處于按下?tīng)顟B(tài);否則處于彈起狀態(tài)。你可以在設(shè)計(jì)期將其設(shè)置為T(mén)rue,這樣按鈕一開(kāi)始就是處于按下?tīng)顟B(tài)。

    Note

    必須在按鈕的GroupIndex屬性大于零時(shí),Down屬性才有作用。如果GroupIndex屬性為零時(shí),單擊按鈕,按鈕不會(huì)保持按下?tīng)顟B(tài)。

    Flat屬性指定該按鈕是否具有立體外觀,當(dāng)為T(mén)rue時(shí),可以表現(xiàn)出彈起和按下的狀態(tài)。當(dāng)設(shè)為False時(shí),最好用不同的圖標(biāo)來(lái)提示用戶(hù)該按鈕的狀態(tài)。

    5、RadioButton(單選按鈕)

    TRadioButton類(lèi)繼承關(guān)系如下:

    ?

    單選按鈕十分常用,一般都是成組出線(xiàn)并且都是互斥的,即用戶(hù)在一組選項(xiàng)中只能選擇唯一的一個(gè)選項(xiàng)。一旦一個(gè)選項(xiàng)被選擇,其他選項(xiàng)將自動(dòng)處于未選狀態(tài)。

    實(shí)現(xiàn)單選按鈕有種辦法:

    • 使用單選按鈕組件(TRadioButton)
    • 使用單選按鈕成組組件(TRadioGroup)

    RadioButton位于Standard組件面板上,在默認(rèn)情況下,放在同一個(gè)容器,如Panel、RadioGroup中的單選框總是自動(dòng)變成一組。下表列出了TRadioButton的常用屬性。

    RadioButton的常用屬性

    屬性含義
    Alignment決定了選項(xiàng)的標(biāo)題與按鈕之間的相對(duì)位置,有taLeftJustify和taRightJustify兩種選擇
    Checked該選項(xiàng)是否被選中

    在使用RadioButton對(duì)象來(lái)設(shè)置單選按鈕時(shí),一般都是先在窗體上放置若干個(gè)GroupBox,再將RadioButton分別放置到響應(yīng)的GroupBox中去,這樣按鈕就屬于GroupBox了,一旦該GroupBox被刪除,其中的RadioButton也將刪除。

    位于Standard組件面板上的RadioGroup組件來(lái)設(shè)置單選按鈕組比用RadioButton和GroupBox來(lái)的更為方便。下面列出了TRadioGroup組件的主要屬性。

    RadioGroup組件的主要屬性

    屬性含義
    Columns制定了該RadioGroup中含有的單選按鈕共排列多少列
    ItemIndex表明當(dāng)前被選擇單選按鈕的序號(hào)
    Items包含了所有單選按鈕標(biāo)題的字符串列表

    單擊Object Inspector的Items屬性右側(cè)的“…”按鈕,會(huì)彈出“String List Editor”對(duì)話(huà)框,對(duì)話(huà)框中的一行就是RadioGroup中一個(gè)單選按鈕的標(biāo)題。

    ?

    6、CheckBox(復(fù)選框)

    TCheckBox類(lèi)繼承關(guān)系如下:

    CheckBox組件位于Standard組件面板上。和RadioButton不同的是,它是一種可以“復(fù)選”的組件,一系列的選項(xiàng)在同時(shí)可以選擇一個(gè)或多個(gè)。復(fù)選框的主要屬性如下:

    復(fù)選框的主要屬性

    屬性含義
    AllowGrayed指定該按鈕是否可以灰顯
    State表明或指定該按鈕的狀態(tài),有cbUnchecked、cbChecked和cbGrayed三種狀態(tài)

    Note

    請(qǐng)不要將灰顯狀態(tài)和禁用狀態(tài)混淆。如果AllowGrayed屬性為T(mén)rue,復(fù)選框就處于變灰單用戶(hù)仍可以操作的狀態(tài);而當(dāng)Enabled屬性為False時(shí),整個(gè)復(fù)選框?qū)⒆兓?#xff0c;并且用戶(hù)將無(wú)法操作。如下圖:

    如果AllowGrayed屬性為False(缺省值),可以通過(guò)Checked屬性來(lái)確定復(fù)選框是否選中;如果AllowGrayed屬性為T(mén)rue,必須用State屬性來(lái)表明或設(shè)置復(fù)選框狀態(tài)。

    Tip

    有時(shí)也許想用復(fù)選框來(lái)提示某種屬性是開(kāi)或是關(guān)的,但使用戶(hù)不能再?gòu)?fù)選框上點(diǎn)擊來(lái)改變狀態(tài)。即想復(fù)選框是禁止的但是顯示是正常的。要是復(fù)選框只讀而不變灰,在面板Panel組件上放置復(fù)選框并改變面板Panel的Enabled屬性為False。

    轉(zhuǎn)載于:https://www.cnblogs.com/pchmonster/archive/2012/01/26/2329616.html

    總結(jié)

    以上是生活随笔為你收集整理的VCL组件之按钮的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。