Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Tpercon 29. Aug 2003 12:55

Re: TPageControl und dynamische anzahl TTabsheets
 
Nö, dynamisch heißt halt "Schreibarbeit".

Adler 29. Aug 2003 13:12

Re: TPageControl und dynamische anzahl TTabsheets
 
Zitat:

Zitat von Tpercon
Nö, dynamisch heißt halt "Schreibarbeit".

Das ist so nicht ganz richtig. Am einfachsten wird es sein wenn du dir eine neue Komponente schreibst und zwar vom Typ TTabSheet.

Delphi-Quellcode:
TMeinTabSheet = class(TTabSheet)
in diese Komponente fügst du alle Button usw. ein die du benötigst. Anschließend must du deiner Pagecontrol nur eine neue Instanz dieser Komponente hinzufügen.

Der Zugriff auf die neuen TabSheets kann dann entweder durch FindComponent erfolgen oder aber du fügst die neuen TabSheets in eine TList ein und kannst dann darüber auf die TabSheets zugreifen.

MfG
Adler

Illuminator-23-5 29. Aug 2003 13:13

Re: TPageControl und dynamische anzahl TTabsheets
 
super adler! thx!

Tpercon 29. Aug 2003 13:17

Re: TPageControl und dynamische anzahl TTabsheets
 
Zitat:

Zitat von Adler
nicht ganz richtig

OK, nur da mußt du dich jawohl auch um das Erzeugen der ganzen Komponenten kümmern. Und da das Erzeugen bei jedem TabSheet gleich ist und in ner Schleife abgearbeitet wird, macht es keinen Unterschied. Somit gibt es keine (mir bekannte) Lösung ohne viel Aufwand.

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

Re: TPageControl und dynamische anzahl TTabsheets
 
ich hab das problem jetzt anders gelöst:
in der Win 3.1-Palette gibts ein TTabSet
das hab ich genommen, und jedesmal, wenn die Seite gewechselt wird, wird der aktuelle Zustand in einem Array gespeichert und für die entsprechende Seite geladen->ich brauch nur die buttons usw. einmal in der Entwicklungsphase auf das Formular setzen
*VorLauterBäumeDenWaldNichtGesehen*

(habs gepostet, falls jemand ein ähnliches problem hat/haben wird)

Marko 12. Okt 2003 17:50

Re: TPageControl und dynamische anzahl TTabsheets
 
Ich hab ein ähnliches Problem. Ich hab mir ebenfalls einen neuen Typ von TTabsheet erstellt, so wie Adler sagte. Nun kann ich problemlos unmengen von Tabsheets erzeugen, aber ich möchte sie ja auch mal wieder schließen.
Dazu habe ich einen Button auf alle Tabsheets gesetzt und in die onclick-prozedur geschrieben: "Form1.pagecontrol1.activepage.free"
Das schließt zwar die Seite, aber das Programm stürzt jedesmal mit einer Zugriffsverletzung ab.
Wenn ich aber dasselbe mit einem Button außerhalb des Tabsheets mache, funzt alles perfekt.
Kann mir irgendjemand sagen, was ich falsch mache?

Marko 17. Okt 2003 12:15

Re: TPageControl und dynamische anzahl TTabsheets
 
OK, ich hab das ganze jetzt mit einem Button außerhalb des Tabsheets gelöst.
Trotzdem würde mich wirklich interessieren, was ich mit meinem anderen Ansatz falsch mache.
Sorry, das ist vielleicht eine blöde Frage, aber ich bin halt nur ein Teilzeithobbyprogrammierer, der gerne etwas dazulernen möchte. :wink:

Nalincah 17. Okt 2003 12:31

Re: TPageControl und dynamische anzahl TTabsheets
 
Ich hab mir nicht alles durch gelesen und weiß auch nicht ob ihr schon ne lösung gefunden habt...Aber ich hab ein ähnliches Problem gehabt und es so gelöst:

Einen Frame erstellt in dem ich die Komponenten reingepackt hab die ich später im tabsheet haben will
dann zu laufzeit ein leeres tabsheet erstellt in das ich dann das Frame erstellt hab. Fertig...Ansteuern mit PageControl.Pages[PageControl.ActivePageIndex].Tag. Das ist eindeutig

woki 17. Okt 2003 13:44

Re: TPageControl und dynamische anzahl TTabsheets
 
HI,

@Marco: Deine Beobachtung ist richtig: Grundsätzlich kann sich keine Komponente in einer eigenen Ereignisbehandlung selbst zerstören, da die Methode einen Zeiger auf das aufrufende Objekt hält, und der zeigt dann nach der Rückkehr plötzlich ins Leere, also gibt es eine Schutzverletzung. Von woanders geht es natürlich.

Zur dynamischen Anzahl Tabsheets:

Wenn zur Desingzeit bereits das Aussehen der einzelnen Tabsheets bekannt ist, muss man die natürlichnicht vollständig von Hand tippen, vielmehr gibt es da diverse Möglichkeiten, sich das Leben zu vereinfachen:

- Alles visuell fertigmachen, und nur das was benötigt wird anzeigen,

oder

- dynamisch: Auch alle Tabsheets soweit bekannt zu Designzeit fertig machen, GExperts frei aus dem Netz holen, Tabsheet etc markieren, Mnuepunkt ComponentsToCode auswählen, den Code für die echte dynamische Erzeugung in den Editor pasten, und man hat es perfekt dynamisch.

Grüsse
Woki

Marko 17. Okt 2003 14:27

Re: TPageControl und dynamische anzahl TTabsheets
 
Ja, sowas hatte ich schon vermutet. Dann muß ich wohl damit abfinden. Aber trotzdem danke! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Seite 2 von 3     12 3      

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