黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平
駕駛員 | 網絡編輯
衛生資格 | 執業醫師 | 執業藥師 | 執業護士
會計從業資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師
質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師
城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > Delphi > 復習資料 > 正文

2011計算機等考Delphi:Delphi自定義部件開發

來源:考試吧Exam8.com) 2010-10-30 9:13:30 考試吧:中國教育培訓第一門戶 模擬考場
在本章中將闡述如何為Delphi應用程序編寫部件。

  2. 怎樣實現標準事件

  Delphi帶的所有控制繼承了大多數Windows事件,這些就是標準事件。盡管所有這些事件都嵌在標準控制中,但它們缺省是protected,這意味著用戶無法訪問它們,當創建控制時,則可選擇這些事件使用戶可用。將這些標準事件嵌入自定義控制需要考慮如下:

  ● 什么是標準事件

  ● 怎樣使事件可見

  ● 怎樣修改標準事件處理過程

 、 什么是標準事件

  有兩種標準事件:用于所有控制和只用于標準Windows控制。

  最基本的事件都定義在對象TControl中。窗口控制、圖形控制和自定義控制都繼承了這些事件,下面列出用于所有控制的事件:

  OnClick OnDragDrop OnEndDrag OnMouseMove

  OnDblClick OnDragOver OnMouseDown OnMouseUp

  所有標準事件在TControl中都定義了相應的protected動態方法,只是沒有加“On”例如OnClick事件調用名為Click的方法。

  標準控制(從TWinControl繼承)具有下列事件:

  OnEnter OnKeyDown OnkeyPress OnKeyUp OnExit

  正如TControl中的標準事件,窗口控制也有相應protected動態方法。

  ⑵ 怎樣使事件可見

  標準事件的聲明是protected,如果想使用戶在運行時或設計時能訪問它們,就需要將它們重聲明為public和 published。重聲明屬性而不描述它的實現將繼承相同的實現方法,只是改變了訪問級別。例如,創建一個部件并使它的OnClick事件出現在運行時,你可增加下面的部件聲明:

  type

  TMyControl=class(TCustomControl)

  published

  property OnClick; { 使OnClick在objectinspector中可見 }

  end;

  ⑶ 怎樣修改標準事件處理過程

  如果想修改自定義部件響應某種事件的方法,可以重寫代碼并將其賦給事件。將聯接每個標準事件的方法聲明的protected是出于慎密的考慮。通過,覆蓋實現方法,能修改內部事件處理過程,通過調用繼承的方法,能保持標準事件處理過程。

  調用繼承的方法的順序是很重要的。一般首先調用繼承的方法,允許用戶的事件處理過程代碼在你的定制代碼前執行。然而也有在調用繼承的方法之前執行自己的代碼情況出現。

  下面是一個覆蓋Click事件的例子:

  procedure TMyControl.Click;

  begin

  inherited Click; { 執行標準處理,包括調用事件處理過程你自己的定制代碼 }

  end;

  3. 定義自己的事件

  定義全新的事件的情況是很少見的。只有當部件的行為完全不同于任何其它事件才需要定義新事件。定義新事件一般包含三個步驟:

  ● 觸發事件

  ● 定義處理過程類型

  ● 聲明事件

  ● 調用事件

 、 觸發事件

  定義自己的事件要遇到的第一個關鍵是:當使用標準事件時你不需要考慮由什么觸發事件。對某些事件,問題是顯然的。例如:一個MouseDown事件是在用戶按下鼠標的左鍵時發生,Windows給應用發送WM_LBUTTONDOWN消息。接到消息后,一個部件調用它的MouseDown方法,它依次調用用戶的OnMouseDown事件處理過程代碼。但是有些事件卻不是那么可以描述清楚的。例如:滾行杠有一個OnChange事件,可被各種情況觸發,包括按鍵、鼠標點按或其它按制中的改變。當定義事件時,你必須使各種情況的發生調用正確的事件。

  這里有TControl處理WM_LBUTTONDOWN消息的方法,DoMouseDown是私有的實現方法,它提供了一般的處理左、右和中按鈕的方法,并將Windows消息的參數轉換為MouseDown方法的值。

  type

  TControl = class(TComponent)

  private

  FOnMouseDown: TMouseEvent;

  procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton;

  Shift: TShiftState);

  procedure WMLButtonDown(var Message: TWMLButtonDown);

  message M_LBUTTONDOWN;

  protected

  procedure MouseDown(Button: TMouseButton; Shift: TShiftState;

  X, Y: Integer); dynamic;

  end;

  procedure TControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

  begin

  if Assigned(FOnMouseDown) then

  FOnMouseDown(Self, Button, Shift, X, Y); { 調用事件處理過程 }

  end;

  procedure TControl.DoMouseDown(var Message: TWMMouse; Button: TMouseButton;

  Shift: ShiftState);

  begin

  with Message do

  MouseDown(Button, KeysToShiftState(Keys) + Shift, XPos, YPos); { 調用動態方法 }

  end;

  procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);

  begin

  inherited; { perform default handling }

  if csCaptureMouse in ControlStyle then

  MouseCapture := True;

  if csClickEvents in ControlStyle then

  Include(FControlState, csClicked);

  DoMouseDown(Message, mbLeft, []); { 調用常規的mouse-down 方法 }

  end;

  當兩種事情-狀態變化和用戶交互—發生時,處理機制是相同的,但過程稍微不同。用戶交互事件將總是由Windows消息觸發。狀態改變事件也與Windows消息有關,但它們也可由屬性變化或其它代碼產生。你擁有對自定義事件觸發的完全控制。

 << 上一頁  11 12 13 14 15 16 17 18 19 20  ... 下一頁  >> 
  相關推薦:2010年9月計算機等級考試試題及答案解析專題
       預告:名師解析2010年9月計算機等級考試試題答案
       2010年9月計算機等級考試成績查詢時間及入口
       2010年9月計算機等考成績查詢短信免費提醒開通
文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
主站蜘蛛池模板: 日韩高清成人 | 在线天天干 | 你懂的手机在线 | 免费观看欧美一区二区三区 | 亚洲国产成人精品一区91 | 亚洲剧场午夜在线观看 | 夜色私人影院永久入口 | 日韩性网| 99久久免费国产特黄 | 99在线观看视频 | 九九精品久久 | 全部毛片免费看 | 久久免费观看国产精品 | 婷婷综合亚洲 | 亚洲天堂视频在线免费观看 | 91精品国产综合久久青草 | 国产在线播放网址 | 欧美人xxx | 视频一区二区国产 | 77788色淫网站免费视频 | 诱人的护士5中文字幕 | 免费看黄色网址 | 免费一级特黄a | 簧片在线免费看 | 你懂的在线视频播放 | 欧美一区二区不卡视频 | 9久热这里只有精品视频在线观看 | 亚洲国产日韩欧美在线 | 99九九精品视频 | 一本高清 | 黄色毛片网 | 国产三级网站在线观看 | 亚洲欧洲日本天天堂在线观看 | 三级中文字幕永久在线视频 | 国产综合在线观看视频 | 二级特黄绝大片免费视频大片 | 亚洲国产一级毛片 | 丁香婷婷亚洲六月综合色 | 777kkk亚洲综合欧美色老头 | 欧美高清xxxxbbbbd | 国产小视频在线高清播放 |