亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi背后---初學者參考之二(1)

2019-11-18 18:23:07
字體:
來源:轉載
供稿:網友

計算機語言一代一代地從機器語言發展到高級語言,從復雜到簡單(其實也不簡單),體現了計算機科學技術的發展。計算機語言越高級,就越抽象越人性化,與低層硬件的關系就越少,使用起來就越方便。但無論計算機語言如何高級,都是對操作系統層的抽象,因此我們總可以找出理解高級語言背后的規律,那就是:高級語言寫的代碼只是為了描述人們的需求,而這些代碼要通過“翻譯器”翻譯成機器語言形式才能被機算機識別執行。所謂的翻譯有兩種方式:一是編譯方式,代碼事先通過編譯器生成機器語言代碼,再由操作系統調度執行,如Delphi語言、C++語言等;二是解釋方式,該方式在計算內是邊解釋邊執行,并不事先生目標程序,如Basic語言、腳本語言等。解釋方式的特點運行速度慢,對計算機硬件要求比較高。

計算機語言定義描述人們需求的規則,在語言的背后是編譯器或解釋器。編譯器或解釋器的主要工作就是翻譯代碼,成為人與計算機交流的主要通道。這樣在操作系統不變的情況下,各種開發工具各顯神通,但最終都要生成計算機可執行的代碼。所以無論用哪種計算機語言寫的程序要判斷其好與壞很大程度上依賴于該語言的編譯器或解釋器。Delphi的編譯器仍然是目前世界上最先進最優秀效率最高的編譯器。

從高級語言的特點來看,它們基本上都是對操作系統提供的服務接口封裝,在此基礎上加入自己的語言特性,如OOP、指針、內存管理模式等。

Delphi語言的整個架構來,我們寫程序要么是直接使用VCL,要么是調用操作系統提供的API,要么是使用Com服務,又或是直接使用匯編語言完成我們的工作。

1. VCL

Delphi最核心最偉大的就是可視化組件庫(VCL——Visual Component Library)和跨平臺組件庫存(CLX——aComponent Library for Cross-Platform),類似于Microsoft MFC,但其架構比MFC至少要先進兩到三代。用Delphi編程你可以選擇VCL也可以不用VCL一切從頭開始。假設寫一個建窗口并顯示“Hello world”的程序,如果不用VCL,那么你得從調用APICreateWindow開始,這是一件多么麻煩的事,不過這還得看你的要求。這里只是說明用Delphi編程離開VCL并不是不行,如控制臺程序。

VCL是一個功能強大的類庫,它是Delphi語言面向對象特性的精華與結晶,類圖結構如下:

這是一個縮略的類圖結構,但很具有代表性,從類圖中我們可以看出,VCL只有一個根——TObjct,它的每一個派生類只有一個祖先。這正是Delphi語言的面向對象的特點,所有類的最原始祖先是TObjcet,繼承方式是單一繼承。需要說明的是:

l         雖然VCL設計很經典也很龐大,但不要被這些所嚇倒。說白了他就是一個類庫,是很多有一定關系的類放在一起完成一定功能的類庫,而這些類要么是封裝WindowsAPI,要么是調用WindwsCOM服務,又或是使用匯編直接操作內存。前面說過,我們寫程序可以用VCL也可以不用VCL,說明VCL并不是必須的。如果有必要,我們可以繼承擴展其中任何一個類使之成為符合自己要求的類。如我們要擴展TPanal類,使鼠標進入和離開時能觸發相應的事件(OnMouseEnter/OnMouseLeave),如QQ面板的功能。

u       從【File->New->Unit】新建一個單元。

u       寫代碼如下,然后保存該單元為MyPanelUnit。

unit MyPanelUnit;

 

interface

  uses Classes, ExtCtrls, Messages, Controls;

  type

    TMouseActionEvent = PRocedure(Sender: TObject) of object;

    TMyPanel = class(TPanel)

      private

                             FOnMouseEnter, FOnMouseLeave:

                                  FouseActionEvent;

        //截獲鼠標進入消息

        procedure WMMouseEnter (var Message:   

            TMessage); message CM_MOUSEENTER;

        //截獲鼠標移開消息

        procedure WMMouseLeave (var Message:        

          TMessage); message CM_MOUSELEAVE;

      published

        property OnMouseEnter: TMouseActionEvent read

           FOnMouseEnter write FOnMouseEnter;

        property OnMouseLeave: TMouseActionEvent read

           FOnMouseLeave write FOnMouseLeave;

    end;

//注意"Register"中的"R"一定要大寫,這是Delphi語言中唯一要注意大小的地方

procedure Register;

 

implementation

 

{ TMyPanel }

 

procedure Register;

begin

  //DelphiIDE中注冊組件,顯示在面板"MyControl"

  RegisterComponents('MyControl', [TMyPanel]);

end;

 

procedure TMyPanel.WMMouseEnter(var Message: TMessage);

begin

  //確定鼠標進入中是否有代碼,如果有執行

  if Assigned(FOnMouseEnter) then

    FOnMouseEnter(Self);

end;

 

procedure TMyPanel.WMMouseLeave(var Message: TMessage);

begin

  //確定鼠標進入中是否有代碼,如果有執行

  if Assigned(FOnMouseLeave) then

    FOnMouseLeave(Self);

end;

 

end.

u       然后點擊【Component->Install Component…】,如下圖:

   

在“Unit file name”中選中我們剛才的單元MyPanelUnit.pas,其他選項默認。然后點擊“OK”, 在“Package dclusr.bpk will be build then install, Continue?”選擇“Yes”,待編譯安裝完后保存,這樣TmyPanel控件就被安裝到Delphi中了。滾動Delphi的控件面板到最后,將會看到如下圖的控件頁MyControl

u       然后再新建一個工程,單擊【File->New->application】,把MyControl頁中的MyPanel拖到Form上,按F11鍵,切換到Events頁,如下:

TPanel比較一下,看是不是多了OnMouseEnterOnMouseLeave事件。雙擊OnMouseEnter,寫代碼如下:

procedure TForm1.MyPanel1MouseEnter(Sender: TObject);

begin

  ShowMessage('鼠標進入MyPanel1');

end;

然后按F9運行,移動鼠標到MyPanel1上,看一下結果如何。

就這么簡單,我們擴展了TPanel,使其具有處理鼠標進入和移開事件的能力,所以VCL并不神秘,任何人都可以重寫里面的組件(類),使之成為自己所要的東西。

l         Delphi支持接口繼承,從某種意義上說實現了多重繼承,如TComponent的定義如下:

TComponent = class(TPersistent, IInterface,

IInterfaceComponentReference)

l         不要拿抽象類創建實例。類中只要有一個方法是抽象方法,那么這個類就是抽象類。如TStrings定義如下:

    TStream = class(TObject)

  private

   

  protected

   

  public

    function Read(var Buffer; Count: Longint): Longint; virtual; abstract;

    function Write(const Buffer; Count: Longint): Longint; virtual; abstract;

   

  end;

一個方法的定義中只要有abstract關鍵字就是抽象方法。用抽象類來創建實例沒有任何意義,因為ReadWrite并沒有實現,如果調用則會出現為例。

 

(未完,請參看Delphi背后---初學者參考之二(2) )

(如需要轉載,請注明出處及作者http://haitian.myrice.com)


上一篇:Delphi模式編程之策略模式(上)

下一篇:在Delphi中使用動態圖標

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久77777| 久久久久久国产三级电影| 日韩精品视频在线观看免费| yw.139尤物在线精品视频| 日韩电影在线观看永久视频免费网站| 日韩专区中文字幕| 日韩欧美亚洲一二三区| 不卡伊人av在线播放| 亚洲精品久久久久久久久| 蜜臀久久99精品久久久无需会员| 久热国产精品视频| 8x海外华人永久免费日韩内陆视频| 尤物九九久久国产精品的特点| 欧美国产日韩中文字幕在线| 国产精品久久久久久久一区探花| 91精品免费看| 国产精品久久久久影院日本| 日韩精品免费在线播放| 亚洲香蕉伊综合在人在线视看| 免费91在线视频| 亚洲精品日韩在线| 国产精品久久久久久av| 18性欧美xxxⅹ性满足| 亚洲a区在线视频| 久久精品视频播放| 91香蕉嫩草神马影院在线观看| 久久夜色精品亚洲噜噜国产mv| 欧美日韩成人免费| 国产成人精品视| 国产精品专区一| 一区二区欧美亚洲| 亚洲摸下面视频| 国产精品扒开腿做爽爽爽男男| 欧美成人精品三级在线观看| 久久av红桃一区二区小说| 亚洲精品国精品久久99热| 亚洲欧美综合区自拍另类| 欧美激情xxxxx| 91精品国产91久久久久福利| 欧美激情影音先锋| 国产精品永久免费在线| 日韩国产欧美精品在线| 国产欧美日韩最新| 国内自拍欧美激情| 最新69国产成人精品视频免费| 伊人久久久久久久久久久久久| 国产精品扒开腿做爽爽爽男男| 亚洲码在线观看| 欧美成人国产va精品日本一级| 国产不卡精品视男人的天堂| 91久久精品在线| 国产一区视频在线| 久久久久久久久久久网站| 欧美丝袜第一区| 国产做受69高潮| 91精品视频在线看| 国产99久久精品一区二区| 欧美限制级电影在线观看| 欧美日韩亚洲91| 久久影视电视剧免费网站清宫辞电视| 欧美激情欧美狂野欧美精品| 日韩久久免费视频| 91精品久久久久久| 精品视频中文字幕| 亚洲视频专区在线| 亚洲91精品在线| 亚洲精品第一页| 中文字幕不卡在线视频极品| 国产精品69久久| 亚洲精美色品网站| 精品女同一区二区三区在线播放| 国产情人节一区| 日本久久久久久久| 日韩av在线电影网| 在线播放国产精品| www.美女亚洲精品| 欧美性受xxxx白人性爽| 日韩人在线观看| 91欧美激情另类亚洲| 欧美精品一区二区免费| 国产69精品久久久久久| 亚洲性生活视频在线观看| 亚洲欧美中文另类| 日本国产精品视频| 亚洲美女av在线播放| 欧洲成人免费aa| 亚洲色在线视频| 精品国产一区二区三区久久久狼| 92看片淫黄大片欧美看国产片| 7m精品福利视频导航| 亚洲欧洲一区二区三区在线观看| 成人在线小视频| 日韩视频一区在线| 欧美大片免费看| 一区二区亚洲欧洲国产日韩| 国产91对白在线播放| 国产精品久久久久久久久久ktv| 日本精品va在线观看| 亚洲精品一区在线观看香蕉| 国产精品在线看| 亚洲最大福利网| 在线观看欧美视频| 美日韩精品免费视频| www.日韩免费| 午夜免费久久久久| 亚洲深夜福利视频| 亚洲男子天堂网| 91国内产香蕉| 国产伦精品一区二区三区精品视频| 国产在线日韩在线| 日韩中文字幕不卡视频| 国产精品一区二区女厕厕| 亚洲免费中文字幕| 欧美午夜电影在线| 欧美成人免费在线观看| 亚洲精品成a人在线观看| 免费97视频在线精品国自产拍| 国产日韩欧美日韩大片| 91av在线播放视频| 日韩电视剧免费观看网站| 国产精品吊钟奶在线| 57pao成人国产永久免费| 欧美尺度大的性做爰视频| 国产日韩换脸av一区在线观看| 91免费观看网站| 欧美美最猛性xxxxxx| 欧美日韩亚洲系列| 欧美一区第一页| 亚洲国产欧美一区二区丝袜黑人| 久久久伊人日本| 丁香五六月婷婷久久激情| 国产欧美久久久久久| 国产99久久精品一区二区永久免费| 最近2019中文字幕在线高清| 欧美精品在线极品| 久久国产精品久久精品| 一区二区亚洲欧洲国产日韩| 91精品视频在线| 黄色一区二区三区| 欧美成人精品不卡视频在线观看| 久久99青青精品免费观看| 精品国产自在精品国产浪潮| 亚洲乱码国产乱码精品精天堂| 久久综合88中文色鬼| 久久成人一区二区| 2019中文在线观看| 国产深夜精品福利| 国产精品91一区| 美日韩精品免费观看视频| 欧美性猛交xxxxx免费看| 国产精品久久久久久搜索| 啪一啪鲁一鲁2019在线视频| 成人激情综合网| 国产成人97精品免费看片| 欧美日韩裸体免费视频| 国产精品久久久久久久天堂| 久久久999成人| 亚洲国产另类久久精品| 国产97人人超碰caoprom| 久久韩国免费视频| 久久精品久久久久久国产 免费| 久久国内精品一国内精品| 亚洲精品国精品久久99热一| 精品av在线播放|