Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

Re: PageControl: in neuem Tab ein Object erstellen

  Alt 2. Mär 2010, 12:14
Zitat von DelTurbo:
Jedes object hat ein .Create und ein .Create(handle). In diesem handle steht immer das übergeordnete object drin.
Ich gehe mal davon aus, dass du mit Objekt nur Komponenten meinst. Diese haben einen Owner als übergeordnetes Element. Es gibt es keinen parameterlosen Konstruktor, sondern nur Create(AOwner), dem man den gewünschten Owner der Komponente übergibt. Bei Controls kommt als zweites übergeordnetes Element noch der Parent dazu - siehe Owner vs. Parent in Delphi Applications.

Zitat von DelTurbo:
Nein, nicht über den namen. Sondern über das Handle was du beim .Create bekommst. Du kannst dann auch sachen ins RichEdit schreiben oder sonstwas machen, auch wenn es nicht sichtbar ist.
Das Handle heißt Referenz oder auch einfach Variable.

Mein Ratschlag dazu wäre: Schmeißt die ganzen withs aus dem Code raus, dann wird diese ganze Diskussion überflüssig.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  NewTab: TTabSheet;
  RichEdit: TRichEdit;
begin
  for i := 0 to 3 do
  begin
    NewTab := TTabSheet.Create(Self);
    NewTab.PageControl := PageControl1;
    NewTab.Name := 'sname' + IntToStr(i);
    NewTab.Caption := IntToStr(i);

    RichEdit := TRichEdit.Create(Self);
    RichEdit.Parent := NewTab;
    RichEdit.Name := 'RichEdit' + IntToStr(i);
    RichEdit.Text := RichEdit.Name;
  end;
end;
Ich hab hier als Owner überall die Form übergeben. Die Hierarchie wird über die Parents hergestellt. So macht's auch Delphi, wenn man die Komponenten per Formdesigner erstellt.
Uli Gerhardt
  Mit Zitat antworten Zitat