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

正文內(nèi)容

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

2025-08-12 15:18本頁面

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

  

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