如何在一个组件中有几个构件?(50分)

  • 主题发起人 主题发起人 glglgl
  • 开始时间 开始时间
G

glglgl

Unregistered / Unconfirmed
GUEST, unregistred user!
也就是说比如:TLabelx 中有几个 Label ,
将TLabelx放入Form中,有几个Label出现。
 
看看TGroupBox是如何实现的?
 
首先从Twincotrol继承一个新类,在他的发布属性Count,(用于指定lable的数量),
再发布属性alignStyle(水平放置,还是竖直排放).声明一个Tlable的动态数组,
在Twincotrol的create里面创建这些Lable,同时指定他们的宿主.要注意在setvalue.

 
最好是参考 TRadioGroup 的源码。
如果在构造函数中把 TRadioGroup 的 Items 赋值,正好是你需要的这种情形,(TRadioGroup 刚刚放到窗口上时是没有 RadioButton 的),不过是
TRadioGroup 里面是 RadioButton, 而你要的是 TLabel。
See it?
From: BaKuBaKu.
 
var
i,n:integer;
begin
n:=0;//Number of Label
for i:=0 to panel1{容器}.controlcount-1 do
if panel1.controls is TLabel then
Inc(n)
end;
 
C++Builder代码,你应该能读懂

将Form1上所有标签的内容都初始化为Hello.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TLabel *label;
int Num=0;
for(int i=0; i<ComponentCount; i++)
if(Components->ClassNameIs("TLabel"))
{
label = (TLabel*)Components;
label->Caption = "Hello";
Num++;
}
AnsiString Mes = "在Form1中有"+IntToStr(Num)+"个Label控件";
ShowMessage(Mes);
}
 
多人接受答案了。
 
后退
顶部