![]() |
PageControl: in neuem Tab ein Object erstellen
Hi,
ich habe gleich zwei fragen. Eventuell auch nur ein verständniss problem. Ich habe mit PageControl ein Objekt erstellt. Nun kann ich mit fogendem Code dort drin tabs erstllen.
Delphi-Quellcode:
Ich weiss ist nicht schön, aber zeigt wie man tabs erstellt. Wie kann ich nun in dieser schleife auch eine RichEdit erstellen? Oder anders gefragt, ich weiss wie man z.b. ein RichEdit zur laufzeit erstellt. Sagen wir mal ich möchte nun RichEdit1 in Tab 1 haben, und RichEdit2 in Tab 2 haben usw.
procedure TForm1.bc(Sender: TObject);
var i: Integer; begin for i := 0 to 3 do with TTabSheet.Create(PageControl1) do begin PageControl := PageControl1; Name := 'sname' + IntToStr(i); Caption := IntToStr(i); end; end; Wegen dem löschen eines tab mit X erstellung bin ich bei euch schon fündig geworden. Das ist aber im moment erstmal zweitrangig für mich. Danke im voraus |
Re: PageControl: in neuem Tab ein Object erstellen
Hallo,
um mal bei deinem Programmierstil zu bleiben ;)
Delphi-Quellcode:
var
i: Integer; NewTab: TTabSheet; begin for i := 0 to 3 do begin NewTab := TTabSheet.Create(PageControl1); with NewTab do begin PageControl := PageControl1; Name := 'sname' + IntToStr(i); Caption := IntToStr(i); with TRichEdit.Create(NewTab) do begin Parent := NewTab; Name := 'RichEdit' + IntToStr(i); Text := Name; end; end; end; end; |
Re: PageControl: in neuem Tab ein Object erstellen
Hi,
erstmal vielen dank. Ich glaube nun blick ich da endlich durch. Ich fasse mal zusammen was ich meine nun zu wissen. Jedes object hat ein .Create und ein .Create(handle). In diesem handle steht immer das übergeordnete object drin. Um mal bei unserem beipiel zu bleiben. RichEdit.Create(PageControl1) erzeugt mir ein RichEdit dessen "vater" in dem fall das tab wäre. Ständ dort RichEdit.Create(Form1) wäre der "vater" die Form1 und könnte logischer weise nicht vom PageControl gehandlet werden. Möchte ich z.b. noch einen text (Label) in dem tab haben kann ich das auch einfach mit TLabel.Cerate(new) machen. Und dann natürlich noch die parameter setzten. Also Top,Left,Caption farben usw. Genauso muss ich bei dem RichEdit was wir erstellen noch die Positionnen eintragen. Ich denke da der vater das tab ist, ist z.b. Top:=0 Left:=0 nicht linkoben in der Form sondern links oben vom tab. Die höhe und breite muss ich dann vom tab auslesen und dementsprechend in das RichEdit eintragen. Ich hoffe ich habs richtig verstanden. Sorry wenn ich soviel fragen muss, aber ich habe bisher nur Assembler (auf div. CPU z.b. 6502,8088,68k,PIC usw.) dann TurboPascal7 (DOS) und diverse algorythmen geschrieben. Dann kam unix mit diversen Daemons (in C und FreePascal) und dann kam PHP, CGI usw. Mit Windows und dem handling hatte ich noch nie was zu tun. Ich weiss zwar was ich progen möchte aber wenn einem das grundverständniss fehlt, oder die syntax, dann steht man halt aufm schlauch. Schon alleine deswegen finde es toll wie einem hier unter die arme gegriffen wird. Ich versuche zwar viel selber rauszufinden, über google und die suchfunktion hier, aber das dauert immer sehr lange und frustet wenn man merkt das der tag wieder rum ist, und man kaum weitergekommen ist. Vielen dank |
Re: PageControl: in neuem Tab ein Object erstellen
Hallo,
Und wie kann ich danach auf dieses RichEdit zugreifen? Wenn ich zum Beispiel nach Wechsel der Registerseite in dem RichEdit auf der neuen Registerseite etwas machen will, wozu ich den Zeiger auf das jetzt aktive RichEdit brauche? Geht das dann einfach über die Name-Eigenschaft? Ich frage das gleich hier, weil davon der optimale Programmierstil für das Einfügen des RichEdit beim Aufbau der Seiten abhängen könnte. |
Re: PageControl: in neuem Tab ein Object erstellen
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.
|
Re: PageControl: in neuem Tab ein Object erstellen
Zitat:
![]() Zitat:
Mein Ratschlag dazu wäre: Schmeißt die ganzen withs aus dem Code raus, dann wird diese ganze Diskussion überflüssig. :mrgreen:
Delphi-Quellcode:
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.
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; |
Re: PageControl: in neuem Tab ein Object erstellen
Zitat:
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz