delphi程式中動態生成控制項的方法

2021-04-12 20:42:51 字數 2116 閱讀 9596

程式中動態生成控制項的方法分為三步,首先,定義生成的控制項型別,再用create函式生成控制項,最後對控制項的相關屬性賦值。以tbutton控制項為例,步驟如下:

---- a. 定義控制項型別

var

button1:tbutton;

---- b.生成控制項

button1:=tbutton. create(self);

button1.parent:=self;

//一般將其父控制項設定為self,如果不設定parent的值,

則控制項不會在螢幕

//顯示出來

---- c.設定其它屬性及定義相關事件響應函式,如caption,left,top,height,width,visible,enabled,hint和onclick事件響應函式等。 

//這裡有乙個子過程,後面付例子,一看就明白  

//designed   by   quark  

unit   expro_wincontrols;  

inte***ce  

uses  

windows,   messages,   sysutils,   classes,   graphics,   controls,   forms,   dialogs,  

stdctrls,   buttons,   comctrls,   extctrls,   grids;  

//動態建立控制項  

function   dynacreatecomponent(ownername:   tcomponent;   comptype:   tcontrolclass;   compname:   string;   v_left,v_top,v_width,v_height:integer):   tcontrol;  

implementation  

function   dynacreatecomponent(ownername:   tcomponent;   comptype:   tcontrolclass;   compname:   string;   v_left,v_top,v_width,v_height:integer):   tcontrol;  

begin  

if   (ownername.findcomponent(compname)<>nil)   and   not(ownername.findcomponent(compname)   is   tcontrol)   then  

begin  

result   :=   nil;  

exit;  

end;  

result   :=   ownername.findcomponent(compname)   as   tcontrol;  

if   result=nil   then  

begin  

result   :=   comptype.create(ownername);  

with   result   do  

begin  

if   ownername   is   twincontrol   then  

begin  

setbounds(v_left,v_top,v_width,v_height);  

parent   :=   twincontrol(ownername);  

if   ownername   is   tform   then   tform(ownername).activecontrol   :=   twincontrol(result);  

end;  

end;  

result.name   :=   compname;  

end  

else    

if   not(result   is   comptype)   then  

begin  

result   :=   nil;  

exit;  

end;  

result.visible   :=   true;  

end;  

end.  

Delphi程式中動態生成控制項的方法及應用

一 delphi中生成控制項的兩種方法 1 form 表單 設計中生成控制項 在進行form設計時,直接在控制項工具箱選擇所需控制項,再設定其屬性與響應事件,這種方法比較常見。2 程式中動態生成控制項 1 定義控制項型別 varbutton1 tbutton 2 生成控制項 button1 tbut...

android動態生成控制項

方法 呼叫布局容器的addview,addview需傳入的引數就是你想放置的view 這裡給出乙個例子 final linearlayout layout new linearlayout this layout.setorientation linearlayout.vertical setcon...

Unity UGUI動態生成控制項

一 首先你得先清楚recttransform元件的一些程式控制 1.先得到ugui控制項上面的recttransform元件 recttransform rtr gameobject.getcomponent 2.設定top和bottom值 rtr.offsetmax new vector2 rtr...