六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

不用注冊新部件就能增加新的方法與屬性

[摘要]摘 要:不需要修改源代碼或在部件面板中注冊派生部件就能為部 關鍵字:delphi delphi3000 方法 派生 繼承&n 類 別:Object Pascal 有沒有辦法不需要修改...
摘 要:不需要修改源代碼或在部件面板中注冊派生部件就能為部
關鍵字:delphi delphi3000 方法 派生 繼承&n
類 別:Object Pascal
  
  

有沒有辦法不需要修改源代碼或安裝派生部件就能增加新的方法和屬性?

增加新的方法和屬性
---------------------------------
有時我們要為已有的部件增加新的方法和屬性(或改變已有屬性的可視性)。一個方法是修改部件,但這意味著對它的package重新編譯,而且如果要其它人也編譯我們的應用程序,就要把我們的變動重新發布,這樣對方就很麻煩。有時我們不能這樣做,因為我們可能沒有源代碼。這樣的話。最好對部件進行派生,并加入新的屬性和方法。例如:
  type
    TEditX = class(TEdit)
    public
      function GetForeColor: TColor;
      procedure SetForeColor(color: TColor);
      property ForeColor: TColor read GetForeColor write SetForeColor;
    end;

這些方法可以按下例的方法實現。
  function TEditX.GetForeColor: TColor;
  begin
    Result := Font.Color;
  end;

  procedure TEditX.SetForeColor(color: TColor);
  begin
    Font.Color := Color;
  end;

強制轉換成新類
------------------------

我們無需安裝新部件或把它注冊到部件面板中或在應用程序中取代已有的控件(這樣會得不償失)。相反任何時候只要我們需要訪問新屬性和方法,我們可以把對象強制轉換(如Edit1)成我們的新類,例如:
  TEditX(Edit1).ForeColor := clRed;



  TEditX(Edit1).SetForeColor(clRed);

警告:只有在新類中加入新的屬性和靜態方法時才能把它強制轉換成派生類,但不能增加新的字域和新的虛方法或動態方法,雖然理論上你可以重載已有的虛方法。此外,已有屬性的可見性可以改變,就象"訪問隱藏屬性"文中講解的InplaceEditor例子。


主站蜘蛛池模板: 桃花视频在线观看免费迅雷 | 四虎欧美永久在线精品免费 | 青草社区在线观看 | 日韩经典视频 | 四虎免费在线播放 | 中国国产aa一级毛片 | 色亚洲一区 | 午夜a级片| 天天色国产| 四虎影在线永久免费观看 | 青春草在线观看视频 | 四虎精品成人免费观看 | 天堂最新资源在线 | 中文字幕在线精品不卡 | 日本xx高清视频免费观看 | 在线视频欧美日韩 | 一二三四免费观看在线影视大全 | 天堂色网 | 青青在线免费观看 | 医生护士一级毛片 | 天天躁日日躁狠狠躁视频下载播二 | 日韩免费高清一级毛片在线 | 香蕉视频在线观看男女 | 最近2019中文字幕大全视频一页 | 四虎国产欧美成人影院 | 中国女人特级毛片 | 日韩欧美亚洲国产精品字幕久久久 | 天天操天天干天天爱 | 午夜在线播放免费高清观看 | 天天干天天插天天操 | 一级黄色在线观看 | 在线视频一区二区三区在线播放 | 青青草原手机在线视频 | 中文字幕天堂网 | 日本亚洲视频 | 亚洲性大片 | 日韩精品一区二区三区中文 | 任我鲁这里有精品视频在线播 | 青青青国产 | 日韩视频在线精品视频免费观看 | 日韩美女视频在线 |