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

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

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

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

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

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

這些方法可以按下例的方法實(shí)現(xiàn)。
  function TEditX.GetForeColor: TColor;
  begin
    Result := Font.Color;
  end;

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

強(qiáng)制轉(zhuǎn)換成新類
------------------------

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



  TEditX(Edit1).SetForeColor(clRed);

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


主站蜘蛛池模板: 青青草久热精品视频在线观看 | 伊人久久中文字幕久久cm | 四虎出品 | 性色视频在线观看 | 日本久久伊人 | 伊人狠狠| 亚洲国产日韩欧美在线a乱码 | 亚欧精品一区二区三区四区 | 亚洲免费视频播放 | 天天射综合 | 日本中文字幕在线视频站 | 日韩欧美高清 | 欧美怡红院免费的视频 | 亚洲一区二区免费看 | 青春草视频在线免费观看 | 亚洲六月丁香色婷婷综合久久 | 四虎永久精品免费观看 | 午夜三级成人三级 | 天堂网2021天堂手机版丶 | 午夜色a大片在线观看免费 午夜骚片 | 亚洲国产欧美在线人成精品一区二区 | 亚洲最新网址 | 亚洲成人aa | 色偷偷亚洲第一成人综合网址 | 视频一区日韩 | 一区二区三区福利 | 视频一区二区不卡 | 亚洲一区二区免费在线观看 | 伊人久久大线蕉香港三级 | 亚洲精品 国产 日韩 | 亚洲国产99在线精品一区二区 | 色综合网址 | 亚洲色中色 | 伊人电院网 | 亚洲永久免费 | 日本欧美一区二区三区高清 | 亚洲 欧美 自拍 另类 欧美 | 在线欧美自拍 | 亚洲第一页综合 | 青青青亚洲精品国产 | 亚洲天堂久久 |