关于PageControl的使用,请教高手

delfans 2001-01-04 05:15:00
我在想在程序运行时在PageControl1里动态添加TabSheet,而且每个TabSheet里都要有一个Richedit,现在我已经知道如何动态添加TabSheet了,但不知道如何给每个TabSheet里加入一个Richedit,请教高手
...全文
164 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hank 2001-01-05
  • 打赏
  • 举报
回复
稍稍改动即可:
procedure TTemplyForm.BitBtn2Click(Sender: TObject);
var
TabSheet1: array[1..10] of TTabSheet;
RichEdit1: array[1..10] of TRichEdit;
i: integer;
begin
for i:=1 to 10 do
begin
TabSheet1[i]:=TTabSheet.Create(Self);
TabSheet1[i].PageControl:=PageControl1;
TabSheet1[i].Caption:='TabSheet1'+IntToStr(i);
TabSheet1[i].Show;
RichEdit1[i]:=TRichEdit.Create(Self);
RichEdit1[i].Parent:=TabSheet1[i];
RichEdit1[i].Top:=10;
RichEdit1[i].Left:=10;
RichEdit1[i].Width:=225;
RichEdit1[i].Lines.Add('This is the '+IntToStr(i)+' RichEdit of '+'TabSheet1'+IntToStr(i));
RichEdit1[i].Show;
end;
end;
saoren 2001-01-05
  • 打赏
  • 举报
回复
var TabSheets:array of TTabSheet;
rts:Array of TRichedit;
rts:=VarArrayCreate([0,10],varVariant);
tabsheets:=varArrayCreate([0,10],varVariant);
for i:=0 to 10 do
begin
TabSheets[i]:=TTabSheets[i].create(self);
...
rts[i]:=TRichEdit.Create(self);
...
rts[i].parent:=TabSheets[i];//用i表示,在动态生成的控件中,它的Name已经没有多少意义了。

end;

rt[i].parent:=TabSheets[i];
liuchcn 2001-01-05
  • 打赏
  • 举报
回复
richedit1的parent是tabsheet1
richedit2的parent是tabsheet2
richedit3的parent是tabsheet3

var rt:trichedit;
ts:ttabsheet;
begin
rt:=TRichEdit.Create(Self);
rt.name:='richedit1';
ts:=TRichEdit.Create(Self);
ts.name:='tabsheet1';
end;
然后用self.findcomponent方法来访问它们。


delfans 2001-01-05
  • 打赏
  • 举报
回复
各位说的方法很好,谢谢!但是有一个问题,因为TabSheet1,TabSheet2。。。是动态生成的且数量不定,如何定义它们的Name属性,因为Delphi不能转换数据类型,所以无法象其他语言那样做 'TabSheet'+i 的循环,这样在RichEdit1里就无法指明他的.Parent属性
Hank 2001-01-04
  • 打赏
  • 举报
回复
看一下这个:

procedure TTemplyForm.BitBtn2Click(Sender: TObject);
var
TabSheet1: TTabSheet;
RichEdit1: TRichEdit;
begin
TabSheet1:=TTabSheet.Create(Self);
TabSheet1.PageControl:=PageControl1;
TabSheet1.Caption:='TabSheet1';
TabSheet1.Show;
RichEdit1:=TRichEdit.Create(Self);
RichEdit1.Parent:=TabSheet1;
RichEdit1.Top:=10;
RichEdit1.Left:=10;
RichEdit1.Width:=225;
RichEdit1.Show;
end;
Kingron 2001-01-04
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
tabsheet:=ttabsheet.Create(self);
tabsheet.PageControl:=pagecontrol1;
tabsheet.Caption:='Test';
rc:=trichedit.Create(self);
rc.parent:=tabsheet;
end;
ePing 2001-01-04
  • 打赏
  • 举报
回复
动态添加完Tabsheet后在再创建你要的rechedit,注意指定你所创建的组件的parent属性,需将其指定到动态创建的tabsheet上

三少 :o)
laza 2001-01-04
  • 打赏
  • 举报
回复
方一个TNoteBook控件,不就行了吗?把richedit 放到TNoteBook中,用Tabsheet控制页
saoren 2001-01-04
  • 打赏
  • 举报
回复
指定控件的parent属性。
richedit1.parent:=tabsheet1;//tabsheet2

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧