Как я могу получить доступ к элементам управления формы, встроенной в элемент управления страницы?

В Form1 у меня есть PageControl. Во время выполнения моя программа создает вкладки. В каждом TabSheet я создаю Form2. В Form2 у меня есть компонент Memo1. Как я могу добавить текст в Memo1?

4 ответа

Решение

Если я правильно понял, что ты делаешь,

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;

Вы могли бы сделать что-то вроде этого:

(PageControl1.Pages[0].Controls[0] as TForm2).Memo1.Lines.Add('text');

Итак, я решил мою проблему с вашей помощью. Это мой код:

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;

Надеюсь, это поможет кому-то еще

Я вижу одну большую проблему с этим кодом -Memo2 будет иметь точно такое же значение, как Memo1, так как нет разницы в циклах поиска. Кроме того, если этот код завершен, то на странице ничего нет, кроме формы, и вообще нет причин для цикла поиска.

Ответ VilleK должен быть скомпилирован и запущен, я не понимаю, о чем вы просите.

Другие вопросы по тегам