在 Form1 中,我有 PageControl。在运行时,我的程序会创建标签页。在每个 TabSheet 中,我创建 Form2。在 Form2 我有一个 Memo1 组件。如何将文本添加到 Memo1?
问问题
2345 次
4 回答
3
你可以这样做:
(PageControl1.Pages[0].Controls[0] as TForm2).Memo1.Lines.Add('text');
于 2010-03-07T21:51:10.110 回答
1
如果我猜对了你在做什么
procedure TForm1.Button1Click(Sender: TObject);
var
View: TForm;
Memo1, Memo2: TMemo;
Page: TTabSheet;
I: Integer;
begin
View:= TForm2.Create(Form1);
View.Parent:= PageControl1.Pages[0];
View.Visible:= True;
View:= TForm2.Create(Form1);
View.Parent:= PageControl1.Pages[1];
View.Visible:= True;
// find the first memo:
Page:= PageControl1.Pages[0];
Memo1:= nil;
for I:= 0 to Page.ControlCount - 1 do begin
if Page.Controls[I] is TForm2 then begin
Memo1:= TForm2(Page.Controls[I]).Memo1;
Break;
end;
end;
Page:= PageControl1.Pages[1];
// find the second memo:
Memo2:= nil;
for I:= 0 to Page.ControlCount - 1 do begin
if Page.Controls[I] is TForm2 then begin
Memo2:= TForm2(Page.Controls[I]).Memo1;
Break;
end;
end;
if Assigned(Memo1) then Memo1.Lines.Add('First Memo');
if Assigned(Memo2) then Memo2.Lines.Add('Second Memo');
end;
于 2010-03-07T22:11:12.057 回答
0
我看到这段代码的一个大问题——Memo2 将具有与 Memo1 完全相同的值,因为搜索循环没有区别。此外,如果这段代码是完整的,那么页面上除了表单之外什么都没有,根本没有理由进行搜索循环。
VilleK 的答案应该编译并运行,我看不出你在问什么。
于 2010-03-07T22:25:17.093 回答
0
所以,我在你的帮助下解决了我的问题。这是我的代码:
var
ID, I: integer;
Tekstas: string;
View: TForm2;
Memo: TMemo;
Page: TTabSheet;
begin
...
Page := PageControl.Pages[ID];
for i := 0 to Page.ControlCount - 1 do
begin
(PageControl.Pages[ID].Controls[0] as TKomp_Forma).Memo.Lines.Add('['+TimeToStr(Time)+']'+Duom[ID].Vardas+': '+Tekstas);
end;
end;
希望这对其他人有帮助
于 2010-03-08T13:48:29.420 回答