Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPageControl und dynamische anzahl TTabsheets (https://www.delphipraxis.net/8122-tpagecontrol-und-dynamische-anzahl-ttabsheets.html)

Illuminator-23-5 29. Aug 2003 07:40


TPageControl und dynamische anzahl TTabsheets
 
Ich habe eine TPageControl auf meinem form
darauf habe ich ein TTabsheet. darauf befinden sich jede menge Buttons, edits und checkboxen. nun möchte ich aber während der laufzeit ein neues Tabsheet erstellen, mit den gleichen buttons, edits und checkboxen.
wie geht das?
(ich möchte danach auch noch weitere erstellen können)
ich hab mir dann sowas gedacht:
Delphi-Quellcode:
var
  Form1: TForm1;
  Seiten: array of TTabSheet;

procedure TForm1.Button1Click(Sender: TObject);
begin
  setLength(Seiten, length(Seiten) + 1);
  Seiten[length(Seiten)-1] := TTabsheet.Create(Form1);
{ab hier weiß ich nicht mehr weiter. wie kann ich jetzt dieses Tabsheet meinem Pagecontrol hinzufügen und sagen, welche comps draufsein sollen?}
end;

Tom 29. Aug 2003 07:49

Re: TPageControl und dynamische anzahl TTabsheets
 
Sofern ich Dein Problem richtig verstehe: Nimm ein TabControl statt PageControl.

Tpercon 29. Aug 2003 07:54

Re: TPageControl und dynamische anzahl TTabsheets
 
Das Ding brauch noch nen Parent, Name (eindeutig sein muß)...
Der Weg stimmt aber.
Wobei, erstell die TabSheets so und mit nem Array. Ansprechen kannst du sie ja mit FindComponent.

Illuminator-23-5 29. Aug 2003 11:51

Re: TPageControl und dynamische anzahl TTabsheets
 
@Tom: wie kann man das mit 'nem TabControl machen?
@Tpercon:
Ich habs jetzt so weit gebracht:
Delphi-Quellcode:
  setLength(Sites, length(Sites) + 1);
  Sites[high(Sites)] := TTabSheet.Create(Form1);
  Sites[high(Sites)] := ts_Localhost;
  Sites[high(Sites)].Name := 'seite' + IntToStr(pg_Main.PageCount);
  Sites[high(Sites)].TabVisible := true;
  Sites[high(Sites)].Caption := 'test';
  Sites[high(Sites)].PageControl := pg_Main;
  pg_Main.InsertComponent(Sites[High(sites)]);
eine Seite kann ich schon hinzufügen
wenn ich eine 2. Hinzufügen will, bringt er eine fehlermeldung (exception) und setzt den 'zeiger' auf die Zeile, wo ich versuch, den Namen zuzuweisen!

wenn ich dich nicht falsch verstanden hab, hast du gemeint, dass ich nicht einen array machen soll
wie solls ohne array gehn???

Matze 29. Aug 2003 12:10

Re: TPageControl und dynamische anzahl TTabsheets
 
Ohne Array geht das nicht, das musst du falsch verstanden haben. ;)

Tpercon 29. Aug 2003 12:11

Re: TPageControl und dynamische anzahl TTabsheets
 
Die Idee mit dem TabControl ist schlecht, da der Zugriff darauf ziemlich schlecht geht.
Hier mal schnell was zum Erstellen der Tabs:
Delphi-Quellcode:
var MyTabSheet: TTabSheet;
    i: integer;
begin
  for i := 1 to 10 do begin
    MyTabSheet := TTabSheet.Create(PageControl1);
    MyTabSheet.Parent := PageControl1;
    MyTabSheet.Name := 'TabSheet'+InttoStr(i);
    MyTabSheet.Caption := 'TabSheet'+InttoStr(i);
    MyTabSheet.Tag := i;
    MyTabSheet.Visible := true;
    MyTabSheet.PageControl := PageControl1;
  end;

end;
Ansprechen kannst du sie jetzt mit FindComponent.

@ Matze: Sind falsch verstanden deine Lieblingswörter? :) (nicht böse gemeint)

Matze 29. Aug 2003 12:12

Re: TPageControl und dynamische anzahl TTabsheets
 
Nimm doch anstatt "pg_Main.PageCount" einfach die Variable, die in den [] steht, oder habe ich da jetzt was falsch verstanden. :gruebel:

Illuminator-23-5 29. Aug 2003 12:38

Re: TPageControl und dynamische anzahl TTabsheets
 
funzt perfekt,
nur: wie krieg ich die ganzen komponenten da rein??

Tpercon 29. Aug 2003 12:47

Re: TPageControl und dynamische anzahl TTabsheets
 
Du erweiterst die Funktion noch etwas:
Delphi-Quellcode:
begin
  for i := 1 to 10 do begin
    MyTabSheet := TTabSheet.Create(PageControl1);
    MyTabSheet.Parent := PageControl1;
    MyTabSheet.Name := 'TabSheet'+InttoStr(i);
    MyTabSheet.Caption := 'TabSheet'+InttoStr(i);
    MyTabSheet.Tag := i;
    MyTabSheet.Visible := true;
    MyTabSheet.PageControl := PageControl1;
    for j := 1 to 10 do begin
      MyButton := TButton.Create(MyTabSheet);
      MyButton.Parent := MyTabSheet;
      MyButton.Name := 'Button'+InttoStr(i)+'-'+InttoStr(j);
      MyButton.Caption := 'Button'+InttoStr(i)+'-'+InttoStr(j);
      MyButton.Width := 50;
      MyButton.Left := j * MyButton.Width + 10;
    end;
  end;

end;
Alles ungetestet, sollte aber das Prinzip klar machen. besondere Aufmerksamkeit gilt halt der Namensverteilung (doppelte,...)!

Illuminator-23-5 29. Aug 2003 12:51

Re: TPageControl und dynamische anzahl TTabsheets
 
geht das nicht anders? (ich hab da 12 Buttons, 6 Edits und 18 Checkboxen!!)!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 1 von 3  1 23      

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