2

Form1にはPageControlがあります。実行時に、私のプログラムはタブシートを作成します。各タブシートでForm2を作成します。Form2には、Memo1コンポーネントがあります。Memo1にテキストを追加するにはどうすればよいですか?

4

4 に答える 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

このコードには大きな問題が1つあります。検索ループに違いがないため、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 に答える