青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Chip Studio

常用鏈接

統(tǒng)計

最新評論

Delphi ActionList詳解

Delphi ActionList詳解

發(fā)表日期:2006年7月4日        已經(jīng)有498位讀者讀過此文


一個友好的用戶界面,必須具有下拉菜單,彈出菜單,工具條和快捷鍵。同樣一個功能,程序員可能要提供幾種操作方式,如文本拷貝,菜單命令& Copy,快捷鍵Ctrl+C,工具條上的拷貝按鈕,都是程序員提供給用戶的操作,可以大大方便了不同層次的用戶。但是,多增加一種操作方式,就意味著增 加響應(yīng)事件的代碼,還有,實(shí)現(xiàn)統(tǒng)一功能的多個操作必須一致,如剪切板上不為空的時候,菜單命令,快捷鍵,按鈕,都是可以選擇的Enabled狀態(tài),而剪切 板上沒有內(nèi)容時,這些構(gòu)件的Enabled狀態(tài)都為假。當(dāng)然,如果不集中控制這些細(xì)節(jié)的話,實(shí)現(xiàn)相同功能的構(gòu)件要一致,必須多增加代碼,控制較為復(fù)雜。
Action 就是將實(shí)現(xiàn)某個功能的細(xì)節(jié)統(tǒng)一管理起來,如Caption, Checked, Enabled, HelpContext, Hint, ImageIndex, ShortCt, Visible, onExecute等屬性和事件。程序員設(shè)置Action屬性的同時,還要實(shí)現(xiàn)執(zhí)行Action的代碼onExecute。定義了Action后,將其連 接到一個菜單項(xiàng),或者按鈕上時,Action定義的屬性和OnExecute事件,馬上取代了原來的設(shè)置,并且建立了連接。通過這個連接,當(dāng)Action 的屬性發(fā)生變化時,如Enabled發(fā)生變化,那么與之連接的構(gòu)件屬性都會自動更新;反過來,當(dāng)構(gòu)件對應(yīng)的事件被執(zhí)行時,Action的 onExecute也被調(diào)用。
8.1.2 Action 和ActionList
Action是定義了最小的功能單位,使用它來在不同構(gòu)件間,達(dá)到代碼集中管理。表4-12定義了Action的一些屬性:
ActionList 是將多個Action統(tǒng)一管理的構(gòu)件,在窗體設(shè)計階段,使用它的彈出菜單,可以增減Action和定義Action的屬性。它本身的屬性Image連接了 一個TImageList,指出它所包含的Action使用那個TImageList來定義ImageIndex。ActionLink是一個看不見的構(gòu) 件,但是它是負(fù)責(zé)構(gòu)件和Action之間建立連接的。
表 4-12  Action屬性和事件
屬性和事件  具體功能
Caption  標(biāo)題,可用于菜單項(xiàng),ToolButton等。
Category  分類
Checked  設(shè)置選擇狀態(tài),用于菜單項(xiàng)
Enabled  設(shè)置可用狀態(tài),用于與之連接的所有構(gòu)件
HelpContext  幫助的索引項(xiàng),用于與之相連的所有構(gòu)件
Hint  智能感知,設(shè)置提示內(nèi)容
ImageIndex  設(shè)置菜單項(xiàng)和按鈕上的圖片
Visible  指示與之連接的構(gòu)件可否顯示
ShortCut  設(shè)置菜單項(xiàng)的快捷鍵。
OnExecute  執(zhí)行此Action的代碼
OnHint  當(dāng)被感知的構(gòu)件顯示Hint時調(diào)用的代碼
OnUpdate  當(dāng)Action更新構(gòu)件的屬性時調(diào)用的代碼
////////////
我們先來認(rèn)識TActionList。TActionList 是從TCustomAction中繼承來的,由它管理定義好的Action,是程序員在對Action編程的接口。
新 建一個工程文件,在主窗體上增加一個TActionList,一個TMemo,一個TImageList,幾個按鈕,幾個菜單項(xiàng)。雙擊 TActionlist,會出現(xiàn)它的編輯界面。再單擊右鍵選擇New standard action,顯示出預(yù)定義的Action類別,屬性Category是用來表明Action所屬類別,我們可以根據(jù)需要選擇具體的類別,如圖4-10所 示,我們引入了文件操作的一些標(biāo)準(zhǔn)Action。
這里所列的Action,大部分屬性已經(jīng)定義好了,就是說只要把他們添加到ActionList中,就可以使用。同樣的,也可以新建Action,在Category屬性中加上自己定義的名字,之后再添加新的Action 。
8.2.2 連接Action
定義了Action后,不與菜單項(xiàng)和按鈕連接,是不能使用的,也沒有達(dá)到程序功能集中實(shí)現(xiàn)和管理。使用對象觀察器,看看我們剛剛選擇的菜單項(xiàng)和按鈕上是否有屬性Action。
在 這些構(gòu)件的Action屬性內(nèi),選擇一個Action之后,構(gòu)件本身的很多屬性都隨著Action定義的屬性發(fā)生了變化,例如菜單項(xiàng)的Caption與 Action的屬性Caption就一致了,構(gòu)件的屬性Name和Tag是不隨著改變的。連接后,Action的屬性值被拷貝到所連接構(gòu)件的相應(yīng)屬性上, 這種連接是動態(tài)地,當(dāng)Action的屬性值發(fā)生變化時,自動更新所聯(lián)系的構(gòu)件。
注意:如果使用的是一個TToolButton 或著是菜單項(xiàng),必須自己設(shè)置與它相聯(lián)系的Images屬性,雖然構(gòu)件的ImageIndex屬性已經(jīng)動態(tài)的同Action相連接,但是屬性Images并未自動連接。
繼續(xù)本節(jié)的例子,通過設(shè)置菜單項(xiàng)和按鈕的Action屬性,完成Action的連接。
8.2.3 處理Action
處 理Action的代碼可放置在Action的onExecute事件,也可以集中放置在ActionList的onExecuteAction中,還可以 更集中的放置在Application的onExecuteAction事件中。改變了以往每個構(gòu)件都必須對應(yīng)事件的做法,程序設(shè)計上更系統(tǒng)化。
在本節(jié)的例子中,編寫某幾個Action的onExecute方法。如FileOpenCmd的onExecute事件如下:
if OpenDialog.Execute then
   Memo1.LoadFromFile(OpenDialog.FileName);
8.2.3 更新Action屬性
Action 的事件有OnExecute和OnUpdate,OnExecute事件在控制被觸發(fā)時響應(yīng),比如說按鈕被按下,菜單被按下,而OnUpdate事件是在 應(yīng)用程序空閑時被調(diào)用,用來更新Action的屬性。ActionList 中也有OnUpdate, 可以用作設(shè)置菜單或者按鈕的可選等屬性使用。如下例,這個例子來自于$Delphi\Demos\RichEdit\Richedit.Dpr程序,有興 趣的讀者可查看一下,以便更了解Action。
1    procedure TMainForm.ActionList2Update(Action: TBasicAction; var Handled: Boolean);
2    begin
3      EditCutCmd.Enabled := Editor.SelLength > 0;
4      EditCopyCmd.Enabled := EditCutCmd.Enabled;
5      if Editor.HandleAllocated then
6         begin
7         EditUndoCmd.Enabled := Editor.Perform(EM_CANUNDO, 0, 0) <> 0;
8         EditPasteCmd.Enabled := Editor.Perform(EM_CANPASTE, 0, 0) <> 0;
9         end;
10   end;
當(dāng)應(yīng)用程序空閑時,就執(zhí)行這段代碼,首先檢查是否有被選定的文本,如果有則將Cut和Copy的Enabled屬性設(shè)為True;當(dāng)前控制是Editor時,設(shè)置Undo和Paste屬性,Perfom是構(gòu)件向自身發(fā)送消息的方法。
Delphi 已經(jīng)定義了一些標(biāo)準(zhǔn)的Action,這些Action實(shí)現(xiàn)的功能和VCL代碼已經(jīng)結(jié)合起來。所以,程序員可以直接使用,有些Action甚至不需要定義 onExecute事件。如Cut,Copy,Paste等剪切板操作,Cancel,Delete,Edit,F(xiàn)irst,Insert,Last, Next,Prior,Post,Refresh等數(shù)據(jù)導(dǎo)航功能,Arrange,Cascade,Close,MinimizeAll, TileHorizontal等窗口排布功能。  


posted on 2008-02-06 01:30 MyChip 閱讀(828) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区高清视频| 篠田优中文在线播放第一区| 欧美夫妇交换俱乐部在线观看| 午夜视频精品| 先锋影音久久久| 午夜久久久久| 久久www免费人成看片高清 | 一区二区三区亚洲| 国产婷婷精品| 韩国v欧美v日本v亚洲v| 精品91免费| 亚洲黑丝在线| 9色精品在线| 一区二区三区三区在线| 亚洲在线国产日韩欧美| 久久成人综合视频| 久久天堂成人| 亚洲精品一区二区三区99| 亚洲一区二区在线看| 欧美一级理论片| 亚洲日本在线视频观看| 亚洲免费一在线| 欧美日韩精品一区| 久久久www成人免费精品| 亚洲国产精品女人久久久| 99综合精品| 一区二区高清在线观看| 午夜视频在线观看一区二区| 久久久精品日韩| 欧美高清不卡| 欧美诱惑福利视频| 欧美视频中文字幕在线| 在线观看日韩欧美| 亚洲欧美在线磁力| 亚洲欧洲一区二区三区久久| 性欧美video另类hd性玩具| 欧美激情一区二区三区在线| 国产亚洲一区二区三区在线观看| 亚洲人在线视频| 久久深夜福利免费观看| 中文欧美在线视频| 免费欧美在线视频| 国产在线不卡精品| 亚洲欧美一级二级三级| 99精品国产一区二区青青牛奶| 久久蜜桃资源一区二区老牛| 国产精品乱码久久久久久| 日韩小视频在线观看| 欧美成人免费播放| 欧美一区二区三区免费观看 | 能在线观看的日韩av| 亚洲在线观看免费| 欧美日韩在线免费| 亚洲免费精品| 欧美国产日韩在线| 久久中文字幕一区| 悠悠资源网久久精品| 久久久夜色精品亚洲| 午夜免费电影一区在线观看| 欧美视频在线观看 亚洲欧| 一本色道精品久久一区二区三区| 亚洲第一中文字幕| 美国十次成人| 亚洲人成小说网站色在线| 欧美好吊妞视频| 免费久久精品视频| 亚洲精品在线一区二区| 欧美激情一区| 欧美福利视频| 日韩午夜一区| 欧美国产日本在线| 国产日本欧美一区二区三区| 亚洲欧美一区二区三区久久| 日韩午夜中文字幕| 欧美色图五月天| 亚洲欧美日产图| 亚洲欧美日本国产专区一区| 国产精品理论片| 久久先锋资源| 欧美大片网址| 亚洲砖区区免费| 久久99在线观看| 亚洲日本在线观看| 亚洲小说春色综合另类电影| 国产日韩欧美三区| 欧美电影在线播放| 欧美日韩天天操| 久久精品一区二区三区不卡| 免费在线日韩av| 亚洲自拍都市欧美小说| 欧美一站二站| 洋洋av久久久久久久一区| 亚洲欧美日韩国产一区二区三区| 精品成人一区二区| 一本高清dvd不卡在线观看| 国产欧美综合在线| 亚洲黄色高清| 国产有码一区二区| 亚洲精品视频在线观看免费| 国产日韩精品一区二区三区| 欧美国产精品v| 国产精品久久久爽爽爽麻豆色哟哟| 久久欧美肥婆一二区| 欧美日韩国产天堂| 噜噜噜久久亚洲精品国产品小说| 欧美日本中文| 男人插女人欧美| 国产精品女主播| 亚洲国产欧美日韩精品| 国产日韩在线视频| 日韩午夜精品视频| 亚洲国产天堂久久综合网| 亚洲欧美日韩精品久久| 亚洲视频一二| 欧美国产欧美综合| 毛片一区二区三区| 国产日韩欧美一区二区三区在线观看| 亚洲韩国青草视频| 亚洲国产日韩欧美一区二区三区| 亚洲欧美区自拍先锋| 亚洲影院在线观看| 欧美日韩另类视频| 亚洲国产日韩一区| 亚洲福利视频二区| 欧美专区日韩视频| 欧美一区精品| 国产精品色一区二区三区| 日韩天堂av| 在线综合+亚洲+欧美中文字幕| 免费成人av在线看| 欧美高清视频一区二区三区在线观看| 国产午夜精品久久久久久久| 亚洲午夜精品在线| 亚洲视频在线免费观看| 欧美精品久久久久久久免费观看| 9l国产精品久久久久麻豆| 欧美大片在线观看一区二区| 免费观看在线综合| 尤物九九久久国产精品的特点| 欧美在线一区二区三区| 久久精品女人天堂| 国产一区二区三区高清播放| 欧美一区二区三区播放老司机| 久久久久国色av免费观看性色| 国产区日韩欧美| 午夜视频一区在线观看| 久久不射中文字幕| 国产一区二区日韩| 久久精品一区二区三区四区| 美女啪啪无遮挡免费久久网站| 黑人操亚洲美女惩罚| 久久久国产精品一区| 免费在线成人av| 亚洲精品久久久久久久久| 欧美mv日韩mv国产网站| 亚洲精品久久| 亚洲中字黄色| 精品成人一区二区三区| 欧美黑人多人双交| 亚洲一区二区三区免费视频| 久久免费精品视频| 亚洲麻豆视频| 国产精品高潮在线| 久久精品亚洲一区二区三区浴池| 久久免费精品视频| 在线播放视频一区| 欧美日韩大陆在线| 亚洲永久网站| 亚洲大片一区二区三区| 亚洲在线日韩| 激情欧美一区二区三区| 免费一级欧美片在线播放| 最新中文字幕亚洲| 亚洲欧美日韩电影| 在线不卡免费欧美| 欧美日韩免费精品| 欧美专区在线观看一区| 免费短视频成人日韩| 亚洲人精品午夜| 国产在线不卡视频| 欧美午夜精品久久久久久久 | 久久亚洲综合网| 亚洲精品在线免费| 久久伊人亚洲| 午夜精品亚洲| 日韩午夜在线播放| 狠狠色狠狠色综合日日小说| 欧美日韩二区三区| 久久精品视频99| 亚洲视频日本| 亚洲精品国产精品国产自| 久久久蜜桃一区二区人| av成人天堂| 在线观看福利一区| 国产毛片一区二区| 欧美日韩在线不卡一区| 蜜臀va亚洲va欧美va天堂| 亚洲欧美另类国产| 一本大道av伊人久久综合| 亚洲二区免费|