首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 類引用機制示例:TControlClass 動態建立控件

     編輯:Delphi

核心概念

類引用 (TControlClass = class of TControl) 讓變數持有「類型本身」而非實例,配合虛擬建構子 Create 實現運行時動態建立不同控件類型。

完整代碼


var ClassRef: TControlClass; // 類引用變數

procedure TForm1.FormCreate(Sender: TObject);
begin
  RadioGroup1.Width := 300; RadioGroup1.Columns := 3;
  RadioGroup1.Items.Add('Button'); RadioGroup1.Items.Add('Edit'); RadioGroup1.Items.Add('Label');
  RadioGroup1.ItemIndex := 0; ClassRef := TButton; // 初始類型
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: ClassRef := TButton;
    1: ClassRef := TEdit;
    2: ClassRef := TLabel;
  end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var NewCtrl: TControl;
begin
  NewCtrl := ClassRef.Create(Self); // 虛擬建構子動態建立
  NewCtrl.Name := ClassRef.ClassName + IntToStr(Self.ControlCount);
  NewCtrl.Parent := Self;
  NewCtrl.Left := X; NewCtrl.Top := Y;
end;

點擊 RadioGroup 切換類型,滑鼠按下視窗任意處即建立對應控件。展示類引用 + 虛擬建構子 + 運行時型別識別 (ClassName) 的經典組合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved