AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPageControl und dynamische anzahl TTabsheets

Ein Thema von Illuminator-23-5 · begonnen am 29. Aug 2003 · letzter Beitrag vom 10. Jun 2004
Antwort Antwort
Seite 1 von 3  1 23      
Illuminator-23-5
(Gast)

n/a Beiträge
 
#1

TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 08:40
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;
  Mit Zitat antworten Zitat
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 08:49
Sofern ich Dein Problem richtig verstehe: Nimm ein TabControl statt PageControl.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#3

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 08:54
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.
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#4

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 12:51
@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???
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:10
Ohne Array geht das nicht, das musst du falsch verstanden haben.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#6

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:11
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)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:12
Nimm doch anstatt "pg_Main.PageCount" einfach die Variable, die in den [] steht, oder habe ich da jetzt was falsch verstanden.
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#8

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:38
funzt perfekt,
nur: wie krieg ich die ganzen komponenten da rein??
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#9

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:47
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,...)!
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#10

Re: TPageControl und dynamische anzahl TTabsheets

  Alt 29. Aug 2003, 13:51
geht das nicht anders? (ich hab da 12 Buttons, 6 Edits und 18 Checkboxen!!)!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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