![]() |
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; |
Re: TPageControl und dynamische anzahl TTabsheets
Sofern ich Dein Problem richtig verstehe: Nimm ein TabControl statt PageControl.
|
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. |
Re: TPageControl und dynamische anzahl TTabsheets
@Tom: wie kann man das mit 'nem TabControl machen?
@Tpercon: Ich habs jetzt so weit gebracht:
Delphi-Quellcode:
eine Seite kann ich schon hinzufügen
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)]); 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??? |
Re: TPageControl und dynamische anzahl TTabsheets
Ohne Array geht das nicht, das musst du falsch verstanden haben. ;)
|
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:
Ansprechen kannst du sie jetzt mit FindComponent.
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; @ Matze: Sind falsch verstanden deine Lieblingswörter? :) (nicht böse gemeint) |
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:
|
Re: TPageControl und dynamische anzahl TTabsheets
funzt perfekt,
nur: wie krieg ich die ganzen komponenten da rein?? |
Re: TPageControl und dynamische anzahl TTabsheets
Du erweiterst die Funktion noch etwas:
Delphi-Quellcode:
Alles ungetestet, sollte aber das Prinzip klar machen. besondere Aufmerksamkeit gilt halt der Namensverteilung (doppelte,...)!
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; |
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 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