人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

第109章 Delphi自定義部件開(kāi)發(fā)(3)

第109章 Delphi自定義部件開(kāi)發(fā)(3)

更新時(shí)間:2022-07-09 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

3. 創(chuàng)建新的消息處理方法

  因?yàn)镈elphi只為大多數(shù)普通Windows消息提供了處理方法,所以當(dāng)你定義自己的消息時(shí),就要?jiǎng)?chuàng)建新的消息處理方法。

  用戶自定義消息的過(guò)程包括兩個(gè)方面:

   ● 定義自己的消息

  ● 聲明新的消息處理方法 

 、 定義自己的消息

  許多標(biāo)準(zhǔn)部件為了內(nèi)部使用定義了消息。定義消息的最一般的動(dòng)因是廣播信息和狀態(tài)改變的通知。

  定義消息過(guò)程分兩步:

  ● 聲明消息標(biāo)識(shí)符

  ● 聲明消息記錄類(lèi)型 

 、 聲明消息標(biāo)識(shí)

  消息標(biāo)識(shí)是整型大小的常量。Windows保存了小于1024的消息用于自己使用,因此當(dāng)聲明自己的消息時(shí),你應(yīng)當(dāng)大于1024。

  常量WM_USER代表用于自定義消息的開(kāi)始數(shù)字。當(dāng)定義消息標(biāo)準(zhǔn)時(shí),你應(yīng)當(dāng)基于WM_USER。

  某些標(biāo)準(zhǔn)Windows控制使用用戶自定義范圍的消息,包括ListBox、ComboBox、EditBox和Button。如果從上述部件中繼承了一個(gè)部件,在定義新的消息時(shí),應(yīng)當(dāng)檢查一下Message單元是否有消息用于該控制。

  定義消息的方法如下: 

  Const

  WM_MYFIRSTMESSAGE=WM_USER+0;

  WM_MYSECONDMESSAGE=WM_USER+1; 

  ② 聲明消息記錄類(lèi)型

  如果你想給予自定義消息的參數(shù)有含義的名字,就要為該消息聲明消息記錄類(lèi)型。消息記錄是傳給消息處理方法的參數(shù)的類(lèi)型。如果不使用消息參數(shù)或者想使用舊風(fēng)格參數(shù),可以使用缺省的消息記錄。

  聲明消息記錄類(lèi)型要遵循下列規(guī)則

  ● 以消息名命名消息記錄類(lèi)型,以T打頭

  ● 將記錄中第一個(gè)域命名為Msg,類(lèi)型為T(mén)MsgPraram

  ● 將接著的兩個(gè)字節(jié)定義為word 以響應(yīng)word大小的參數(shù)

  ● 將接著的四個(gè)字節(jié)與long參數(shù)匹配

  ● 將最后的域命名為Result,類(lèi)型為L(zhǎng)ongint 

  下面是TWMMouse的定義 

  type

  TWMMouse=record

  Msg: TMsgParam; { 第一個(gè)是消息ID }

  Keys: Word; { wParam }

  case Integer of { 定義lParam的兩種方式 }

  o: (

  Xpos: Integer; { 或者以x,y座標(biāo) }

  Ypos: Integer);

  1: (

  Pos : TPoint; { 或者作為單個(gè)點(diǎn) }

  Result: Longint; ) { 最后是Result域 }

  end; 

  TWMMouse使用變長(zhǎng)記錄定義了相同參數(shù)的不同名字集。

  ⑵ 聲明新的消息處理方法

  有兩類(lèi)環(huán)境需要你定義新的消息處理方法:

  ● 自定義新部件需要處理沒(méi)有被標(biāo)準(zhǔn)部件處理的Windows消息

  ● 已定義了自定義部件使用的新消息 

  聲明消息處理方法的辦法如下:

  ● 在部件聲明中的protected部分聲明方法

  ● 將方法做成過(guò)程

  ● 以要處理的消息名命名方法 但不帶下劃線

  ● 傳遞一個(gè)命名為Message的var參數(shù),類(lèi)型為消息記錄類(lèi)型

  ● 編寫(xiě)用于該部件的特別處理代碼

  ● 調(diào)用繼承的消息方法 

  下面是用于用戶自定義消息CM_CHANGECOLOR的消息處理代碼: 

  type

  TMyComponent=class(TControl)

  …

  protected

  procedure CMChangeColor(var Message:TMessage);

  message CM_CHANGECOLOR;

  end: 

  procedure TMyComponent.CMChangeColor(var Message: TMessage);

  begin

  color := Message lParam;

  inherited;

  end;

  19.2.2.4 注冊(cè)部件 

  編寫(xiě)部件及其屬性、方法和事件只是部件創(chuàng)建過(guò)程的一部分。盡管部件具有這些特征就可用,但部件真正功能強(qiáng)大的是在設(shè)計(jì)時(shí)操作它們的能力。

  使部件在設(shè)計(jì)時(shí)可用需要經(jīng)過(guò)如下幾步:

  ● 用Delphi注冊(cè)部件

  ● 增加選擇板位圖

  ● 提供有關(guān)屬性和事件的幫助

  ● 存貯和讀取屬性 

  1. 用Delphi注冊(cè)部件

  為了讓Delphi識(shí)別自定義部件,并將它們放置于Component Palette上,你必須注冊(cè)每一個(gè)部件。

  注冊(cè)一個(gè)部件要在部件所在單元里加入Register方法,這包括兩個(gè)方面的內(nèi)容:

  ● 聲明注冊(cè)過(guò)程

  ● 實(shí)現(xiàn)注冊(cè)過(guò)程 

  一旦安裝了注冊(cè)過(guò)程,就可以將部件安裝在選擇板上。

  注冊(cè)過(guò)程要在部件所在單元中寫(xiě)一個(gè)過(guò)程,該過(guò)程必須以Register命名。Register必須出現(xiàn)在庫(kù)單元的interface部分,這樣Delphi就能定位它。在Register過(guò)程中,可以為每個(gè)部件調(diào)用過(guò)程RegisterComponents。

  下面的代碼演示了建立和注冊(cè)部件的概略方法: 

  unit MyBtns; 

  interface 

  type

  … { 聲明自定義部件 }

  procedure Register; 

  Implementation 

  procedure Register;

  begin

  … { 注冊(cè)部件 }

  end; 

  end. 

  在Register過(guò)程中,必須注冊(cè)每一個(gè)要加入Component Palette的部件,如果庫(kù)單元包含若干部件,就要將它們一次性注冊(cè)。

  注冊(cè)一個(gè)部件時(shí),為部件調(diào)用RegisterComponents過(guò)程。RegisterComponents告訴Delphi兩件有關(guān)所注冊(cè)的部件的事::

[1] [2] [3] [4]  下一頁(yè)

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 西和县| 乌鲁木齐市| 久治县| 北安市| 荃湾区| 嵊州市| 靖宇县| 丹凤县| 深圳市| 遂溪县| 神池县| 金川县| 台江县| 中阳县| 永善县| 莱芜市| 凤冈县| 肇庆市| 镇巴县| 阿勒泰市| 鄯善县| 土默特左旗| 石门县| 奉节县| 合作市| 玛多县| 色达县| 济阳县| 石门县| 衡山县| 金乡县| 天长市| 北流市| 濉溪县| 神池县| 江陵县| 青浦区| 凉山| 高淳县| 石渠县| 龙井市|