![]() |
Objekte auf Tabsheets
hallo, ich mal eine frage, ich habe leider bei google oder auch in den foren keine passende lösung gefunden. ich möchte meine komponenten (labels, groupboxes, tabsheets) dynamisch erzeugen, da ich n - Tabsheets brauche. das klappt auch schon alles hervorragend, mein problem ist jetzt wie ich die einzelnen labels anspreche :gruebel:
so schauts aus:
Delphi-Quellcode:
davon noch ein wenig mehr, sodass ich auf jedem meiner n tabsheets das gleiche muster habe. meine frage ist jetzt wie ich zb. das label1 auf dem ersten tabsheet anspreche?
for i := 1 to n - 1 do
begin Tabsheet[i] := TTabsheet.Create(Form1); with Tabsheet[i] do begin Parent := PageControl1; PageControl := PageControl1; end; end; //[...] for i := 1 to n - 1 do begin GroupBox1 := TGroupBox.Create(Form1); with GroupBox1 do begin Caption := ' User '; Parent := TabSheet[i]; end; Label1 := TLabel.Create(Form1); with Label1 do begin Caption := 'Current User: '; Parent := GroupBox1; Top := 20; Left := 8; Height := 13; Width := 71; end; end; ich kann zwar mit label1.caption oder so arbeiten, da aber auf allen tabsheets die labels gleich heißen, kann ich quasi nur die auf der letzten seite ansprechen... am besten wäre sowas wie tabsheet[3].label1.caption ... so in der art. kann mir da jmd weiterhelfen? danke Andreas |
Re: Objekte auf Tabsheets
Du mußt den Sheet nach dem label fragen
Delphi-Quellcode:
(TabSheet[i].FindComponent('<Labelname>') as TLabel).Text
|
Re: Objekte auf Tabsheets
erzeug dir ein array von TLabel, das du im formular hinterlegst
Delphi-Quellcode:
T.... = class(TForm)
private Labels : array of TLabel; ... setlength(Labels, n); Labels[i] := TLabel.Create(...); |
Re: Objekte auf Tabsheets
erstmal danke für die schnelle antwort. das mit den findcomponent klingt plausibel, scheint aber irgendwie nicht zu klappen. ich habe jetzt beim dynamischen kreirien den namen hinzugefügt:
Delphi-Quellcode:
damit müsste er ja eindeutig sein. und beim aufruf das hier:
Label1 := TLabel.Create(Form1);
with Label1 do begin Name := 'LblCurrUser' + IntToStr(i);
Delphi-Quellcode:
da ändert sich leider wenig im vergleich zu vorher, er findet sie nicht. :( habt ihr nochmal so eine schnelle lösung?
(Tabsheet[1].FindComponent('LblCurrUser1') as TLabel).Caption := 'Current User: ' + GetUserName;
Andreas |
Re: Objekte auf Tabsheets
Habe mir deinen Sourcecode mal genauer angesehen Parent ist auch die Form.
Delphi-Quellcode:
(Form1.FindComponent('LblCurrUser1') as TLabel).Caption := 'Current User: ' + GetUserName;
|
Re: Objekte auf Tabsheets
klasse! damit funzt es. nochmals danke besoders ihnen herr kinzler (sie haben mir schon in anderen foren öfters geholfen :-D ), find ich super, dass sie so aktiv helfen :thumb:
-closed |
Re: Objekte auf Tabsheets
Du darfst mich ruhig duzen
|
Re: Objekte auf Tabsheets
Hallo!
Dynamisch ist ja schön, aber das auch noch zu Fuß? :) Kleiner Tipp: Entwerfe doch ein Frame, auf dem du die Steuerelemente ablegst. Da kannst du wie bei einem normalen Formular die IDE nutzen, und die Komponenten sind auch alle dementsprechend über ihren Namen referenzierbar. Anschliessend erstellst du das Frame dynamisch und weist es dem neuen Tabsheet zu. Dann hast du beides: RAD und toll dynamisch. Cu, Udontknow |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 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-2025 by Thomas Breitkreuz