freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

delphi自定義部件開(kāi)發(fā)二-資料下載頁(yè)

2025-08-12 15:18本頁(yè)面

【導(dǎo)讀】見(jiàn)和操作它們,并且在交互過(guò)程中能立即得到返回結(jié)果。屬性也很重要,因?yàn)槿?。果將它們?cè)O(shè)計(jì)好后,將使用戶更容易地使用,自己維護(hù)起來(lái)也很容易。理構(gòu)造對(duì)象的參數(shù)。從部件使用者的觀點(diǎn)看,屬性象變量。用戶可以給屬性賦值或讀值,就好象。這是非常重要的,因?yàn)椴幌蠓椒ǎ荒茉谶\(yùn)行時(shí)訪問(wèn)。件中,將實(shí)現(xiàn)不同的功能。Pascal類型,兼容性規(guī)則都適用屬性。的類型出現(xiàn)在ObjectInspector窗口中的方式不同。簡(jiǎn)單類型Numeric、Character和String屬性出現(xiàn)在ObjectInspector中,式列表框,顯示所有的可能取值。戶通過(guò)將集合元素設(shè)為T(mén)rue或False來(lái)選擇。性,用戶在ObjectInspector中通過(guò)展開(kāi)對(duì)象屬性列,可以獨(dú)立編輯它們,當(dāng)你從已有部件繼承時(shí),新部件將繼承祖。如想使用戶訪問(wèn)protected或public屬性,可以將該。將Ctl3D重聲明為published,就改變了Ctl3D的訪問(wèn)級(jí)別。使屬性數(shù)據(jù)可用的最簡(jiǎn)單的辦法是直接訪問(wèn)。直接訪問(wèn),而用write進(jìn)行方法訪問(wèn),以改變部件的狀態(tài)。數(shù)的唯一例外是數(shù)組屬性。如果沒(méi)有聲明寫(xiě)方法,那么屬性是只讀的。

  

【正文】 果。 部件不應(yīng)當(dāng)要求用戶以特殊方式使用它們。既然一個(gè)空事件處理過(guò)程應(yīng)當(dāng)與無(wú)事件處理過(guò)程一樣動(dòng)作,那么調(diào)用用戶事件處理過(guò)程的代碼應(yīng)當(dāng)象這樣: if Assigned(OnClick) then OnClick(Self)。 { 執(zhí)行缺省處理 } 而不應(yīng)該有這樣的代碼: if Assigned(OnClick) then OnClick(Self) else ? 。 { 執(zhí)行缺省處理 } 對(duì)于某些種類的事件,用戶可能想取代缺省處理甚至刪除所有的響應(yīng)。為支持用戶實(shí)現(xiàn)這種功能,你需要傳遞 var 參數(shù)給事件處理過(guò)程,并在事件處理過(guò)程返回時(shí)檢測(cè)某個(gè)值??帐录幚磉^(guò)程與無(wú)事件處理過(guò)程有相同作用。因?yàn)榭帐录幚磉^(guò)程不會(huì)改變?nèi)魏?var 參數(shù)值。所以缺省處理總是在調(diào)用空事件處理過(guò)程后發(fā)生。 例如 在處理 KeyPress 事件,用戶可以通過(guò)將 var 參數(shù) key 的值設(shè)置為空字符 (0)來(lái)壓制部件的缺省處理,代碼如下: if Assigned(OnkeyPress) then OnkeyPress(Self key)。 if key 0 then { 執(zhí)行缺省處理 } 。 實(shí)際的代碼將與這稍有不同,因?yàn)樗惶幚泶翱谙ⅲ幚磉壿嬍窍嗤?。在缺省情況下,部件先調(diào)用任何用戶賦予的事件處理過(guò)程,然后執(zhí)行標(biāo)準(zhǔn)處理。如果用戶的事件處理過(guò)程將 key 設(shè)為空,則部件跳過(guò)缺省處理。 處理消息 在傳統(tǒng) Windows 編程中,一個(gè)很關(guān)鍵的方面是處理 Windows 發(fā)送給應(yīng)用程序的消息。 Delphi 已經(jīng)幫你處理了大多數(shù)的普通消息,但是在創(chuàng)建部件的過(guò)程中有可能 Delphi 沒(méi)有處理方法,得由自己處理消息,也可能創(chuàng)建了新的消息需要處理它們。 學(xué)習(xí)掌握 Delphi 的消息處理,要掌握以下三個(gè)方面: ● 理解消息處理系統(tǒng) ● 修改 (改變 )消息處理方法 ● 建立新的消息處理方法 1. 理解消息處理系統(tǒng) 所有的 Delphi 對(duì)象內(nèi)部具有處理消息的機(jī)制,如調(diào)用消息處理方法或消息處理過(guò)程。消息 處理的基本思想是對(duì)象接收某種消息并派送它們,這是通過(guò)調(diào)用與接收的消息相應(yīng)的方法來(lái)實(shí)現(xiàn)的,如果沒(méi)有相應(yīng)于消息的指定的方法,那就調(diào)用缺省處理。下面的圖解表示消息派送系統(tǒng): Delphi 部件庫(kù)定義了將所有 Windows 消息 (包括用戶自定義消息 )直接轉(zhuǎn)換到對(duì)象方法調(diào)用的消息派送系統(tǒng)。一般沒(méi)有必要改變這種消息派送系統(tǒng),只要建立消息處理方法。 ⑴ Windows 消息中有什么 ? Windows 消息是包含若干有用的域的數(shù)據(jù)記錄。記錄中最重要的是一個(gè)整型大小的值,該值標(biāo)識(shí)消息。 Windows 定義了大量的消息。庫(kù)單元 Messages 聲明了所有消息的標(biāo)識(shí)。消息中其它的有用信息包括兩個(gè)域參數(shù)和結(jié)果域。兩個(gè)參數(shù)分別是 16 位和 32 位的。 Windows 代碼總是以 wParam 和 lParam 來(lái)引用它們。 最初, Windows 程序員不得不記住包含的每一個(gè)參數(shù)?,F(xiàn)在,微軟公司已經(jīng)命名了這參數(shù)。這樣理解伴隨這些消息的信息就更簡(jiǎn)單了。例如,WM_KEYDOWN消息的參數(shù)被稱為 vkey和 keydata,這就比 wParam和 lParam給出了更多的描述信息。 Delphi 為不同類型的消息定義了指定的記錄類型。如鼠標(biāo)消息在 long 參數(shù)中傳遞鼠標(biāo)事 件的 x、 y 座標(biāo),一個(gè)在高字,一個(gè)在低字。使用鼠標(biāo)消息記錄,你不需要自己關(guān)心哪個(gè)字是哪個(gè)座標(biāo),因?yàn)橐眠@些參數(shù)時(shí)通過(guò)名子 Xpos 和Ypos 取代了 lParamLo 和 lParamHi。 ⑵ 派送方法 當(dāng)應(yīng)用程序創(chuàng)建窗口時(shí),在 Windows Kernel 中注冊(cè)了一個(gè)窗口過(guò)程。窗口過(guò)程是處理窗口消息的函數(shù)。傳統(tǒng)上,窗口過(guò)程包括了 Case 表達(dá)式,表達(dá)式的每個(gè)入口是窗口要處理的每一條消息。當(dāng)你每次創(chuàng)建窗口時(shí),必須建立完整的窗口過(guò)程。 Delphi 在下列三方面簡(jiǎn)化了消息派送: ● 每個(gè)部件繼承了完整的消息派 送系統(tǒng) ● 派送系統(tǒng)具有缺省處理。用戶只需定義想響應(yīng)的消息的處理方法 ● 可以修改消息處理的一部分,依靠繼承的方法完成大多數(shù)處理 這種消息派送系統(tǒng)的最大優(yōu)點(diǎn)是用戶能在任何時(shí)候安全地發(fā)送任何消息給任何部件。如果部件沒(méi)有為該消息定義處理方法,那缺省處理方法會(huì)解決這個(gè)問(wèn)題,通常是忽略它。 Delphi為應(yīng)用程序每種類型的部件注冊(cè)了名為 MainWndProc的方法作為窗口過(guò)程。 MainWndProc 包含了異常處理塊,它完成從 Windows 到名為 WndProc的虛方法傳送消息記錄,并且通過(guò)調(diào)用應(yīng)用程序?qū)ο蟮?HandleException 方法處理異常。 MainWndProc 是靜態(tài)方法,沒(méi)有包含任何消息的指定處理方法。定制過(guò)程發(fā)生在 WndProc 中,因?yàn)槊總€(gè)部件類型都能覆蓋該方法以適合特定的需要。 WndProc 方法為每個(gè)影響它們處理的任何條件進(jìn)行檢查,以捕捉不要的消息。例如,當(dāng)被拖動(dòng)時(shí),部件忽略鍵盤(pán)事件,因此, TWinControl 的 WndProc只在沒(méi)有拖動(dòng)時(shí)傳送鍵盤(pán)事件。最后 WndProc 調(diào)用 Dispatch方法,該方法是從TObject 繼承來(lái)的靜態(tài)方法,決定什么方法來(lái)處理消息。 Dispatch使用消息記錄的 Msg 域來(lái)決定怎樣派送特定消息。如果部件已經(jīng)給該消息定義了處理方法,則 Dispatch調(diào)用該方法,反之, Dispatch調(diào)用缺省處理方法。 2. 改變消息處理方法 在改變自定義部件的消息處理方法之前,先要弄清楚你真正想要做什么。Delphi 將大多數(shù)的 Windows 消息轉(zhuǎn)換成部件編寫(xiě)者和部件用戶都能處理的事件。一般來(lái)說(shuō),你應(yīng)當(dāng)改變事件處理行為而不是改變消息處理行為。 為了改變消息處理行為,要覆蓋消息處理方法。也能提供捕獲消息防止部件處理該消息。 ⑴ 覆蓋處理方法 為了改變部件處理特定 消息的方法,要覆蓋那個(gè)消息的處理方法。如果部件不處理該消息,你就需要聲明新的消息處理方法。 為了覆蓋消息處理方法,要在部件中以相同的消息索引聲明新的方法。不要使用override 指令,你必須使用 Message 指令和相應(yīng)的消息索引。 例如,為了覆蓋一個(gè)處理 WM_PAINT 消息的方法,你要重聲明 WMPaint方法 : type TMyComponent=class(? ) procedure WMPaint(var Message: TWMPaint)。 message WM_PAINT。 end。 ⑵ 使用消息參數(shù) 在消息處理方法內(nèi)部,自定義部件訪問(wèn)消息記錄的所有參數(shù)。因?yàn)橄⒖偸莢ar 參數(shù),如果需要的話,事件處理過(guò)程可以改變參數(shù)的值。 Result 域是經(jīng)常改變的參數(shù)。 Result 是 Windows 文檔中所指的消息的返回值:由 SendMessage返回。 因?yàn)橄⑻幚矸椒ǖ南?shù)的類型隨著被處理的消息的變化而變化,所以應(yīng)當(dāng)參考 Windows 消息文檔中的參數(shù)的名字和含義。如果出于某種原因要使用舊風(fēng)格的消息參數(shù) (wParam、 lParam),可以配合通用類型 TMessage 來(lái)決定Message。 ⑶ 捕獲消息 在某種情況下,你可能希望自定義部件能忽略某種消息。就是說(shuō),阻止部件將該消息派送給它的處理方法。為了那樣來(lái)捕獲消息,可以覆蓋虛方法WndProc。 WndProc 方法在將消息傳給 Dispatch方法前屏蔽該消息。它依次決定哪一個(gè)方法來(lái)處理消息。通過(guò)覆蓋 WndProc,部件得到了派送消息之前過(guò)濾它們的機(jī)會(huì)。 通常,象下面這樣覆蓋 WndProc: procedure (var Message: TMessage)。 begin { 決定是否繼續(xù)處理 過(guò)程 } inherited WndProc (Message)。 end。 下面的代碼是 TControl 的 WndProc 的一部分。 TControl 定義整個(gè)范圍內(nèi)的鼠標(biāo)消息,當(dāng)用戶拖動(dòng)和放置控制時(shí),它們將被濾過(guò)。 procedure TControl WndProc(var Message:TMessage)。 begin if ( = WM_MOVSEFIRST) and ( = WM_MOUSELAST) then if Dragging then DragMouseMsg(TWMMOUSE(Message)) { 處理拖動(dòng) } else ? { 正常處理其它 } ? { 否則正常處理 } end。
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1