Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Objekte auf Tabsheets (https://www.delphipraxis.net/90610-objekte-auf-tabsheets.html)

RoyKeane 20. Apr 2007 14:07


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:
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;
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?
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

mkinzler 20. Apr 2007 14:13

Re: Objekte auf Tabsheets
 
Du mußt den Sheet nach dem label fragen

Delphi-Quellcode:
(TabSheet[i].FindComponent('<Labelname>') as TLabel).Text

Gruber_Hans_12345 20. Apr 2007 14:15

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(...);

RoyKeane 20. Apr 2007 15:00

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:
Label1 := TLabel.Create(Form1);
  with Label1 do
    begin
    Name := 'LblCurrUser' + IntToStr(i);
damit müsste er ja eindeutig sein. und beim aufruf das hier:

Delphi-Quellcode:
(Tabsheet[1].FindComponent('LblCurrUser1') as TLabel).Caption := 'Current User: ' + GetUserName;
da ändert sich leider wenig im vergleich zu vorher, er findet sie nicht. :( habt ihr nochmal so eine schnelle lösung?

Andreas

mkinzler 20. Apr 2007 15:06

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;

RoyKeane 20. Apr 2007 15:26

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

mkinzler 20. Apr 2007 15:31

Re: Objekte auf Tabsheets
 
Du darfst mich ruhig duzen

Udontknow 20. Apr 2007 15:39

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 22:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz