![]() |
PageControl mit Tabsheets zur Laufzeit erzeugen
Hallo zusammen,
ich habe folgendes Problem. Mein Formular besteht aus einem Pagecontrol dessen Anzahl von Tabsheets erst zur Laufzeit bestimmt wird. Es sind maximal 300 Tabsheets die erzeugt werden. Meine Idee ist bisher, 300 Tabsheets zu erzeugen und abhängig davon wieviele gebraucht werden, die übrigen Tab-Köpfe auszublenden. Da gibt es doch bestimmt eine sauberere Methode?! Gruß Sebastian |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
...und das sagt die Delphi Hilfe dazu:
Zitat:
Aber bist Du sicher, daß Du das mit PageControls machen möchtest? Wären ![]() Sherlock |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Ich würde nur jene Tabsheets erzeugen, welche wirklich gebraucht werden.
|
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
TTabControl habe ich noch nie benutzt. Wenn das besser/flexibler
ist nehme ich das. Ich nehme an, dass erstellen der Tabs zur Laufzeit ist auch hier möglich?! |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Hallo Sebastian,
selbst wenn es nur 30 TabSheets wären, läge ein Design-Fehler vor. Kannst du deinen Anwendungsfall ein wenig beschreiben? Freundliche Grüße |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
KLar. Jedes Sheet soll einen StringGrid beinhalten.
Auf diese Weise stelle ich themengebundene Variablen/Messwerte dar, die durch die verschiedenen Tabs gruppiert werden. Ich bin für Anregungen, wie man das besser darstellen kann natürlich offen. |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Wäre es da nicht geschickter, ein einziges StringGrid zu verwenden, dessen Inhalt und Layout über ein geeigneteres UI-Control gesteuert wird?
Wenn du bisher 300 Tabsheet-Titel für die Steuerung vorgesehen hast, so könnte ich mir diese hierarchisch aufbereitet in einem TreeView-Control vorstellen. |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Zitat:
die alle "Themen" Deiner Meßwerte aufzeigt. In Abhängigkeit des gewählten Eintrages in Deiner Stringliste wird in der Mitt ein StringGrid mit den dementsprechenden Daten gefüllt. Vielleicht entspricht das nicht dem idealen Design-Guide, dafür ist die Wartung UND Benutzung allerdings übersichtlich. Moni |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Zitat:
zum Gliedern geeignet, als einfach nur eine StringListe |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Hi,
an das TreeView Element hatte ich auch schon gedacht. Bleibt immer noch das Problem, dass Abhängig von der Anwendung mehr oder weniger "Themen" in der TreeView Liste vorhanden sein sollen. Danke für eure Anregungen. Sebastian |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Zitat:
wo genau liegt da das problem? du kannst den doch wunderbar während der Laufzeit mit neuen Einträgen versorgen und alte rauskicken Gruß Ansgar |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Jedes Element einer TTreeView (TTreeNode) hat die Eigenschaft 'Data'. Dort kannst Du reinschreiben, was du willst. Also ein Objekt, einen Zeiger oder einfach eine Zahl.
Nummieriere also deine Themen durch, erzeuge die Baumstruktur und weise Node.Data die Themennummer zu. Im OnChange-Ereignis, das immer dann eintritt, wenn von einem Knoten zum nächsten gewechselt wird, aktualisierst du dann deine Messwerte entsprechend der Node.Data-Eigenschaft des neu selektierten Knotens. Das ist wirklich sehr einfach. |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Guten Morgen,
wie ich die StringGrid mit den einzelnen Knoten verknüpfe ist soweit klar. Ich habe es jedoch noch nicht hinbekommen, dass je nach Programmablauf entweder nur 5 Nodes erscheinen oder 20 Nodes. (Nicht für jeden Nutzer sollen alle Variablen sichtbar sein...) |
Re: PageControl mit Tabsheets zur Laufzeit erzeugen
Ich habe das so gelöst:
Ich habe eine unsichtbare Treeview, in der ich zur Designzeit alle verfügbaren Knoten habe. Weiterhin habe ich eine sichtbare Treeview, die aber leer ist. Und dann habe ich eine Tabelle, die für jeden Anwender regelt, welche Knoten-IDs er sehen darf, und welche nicht. Wenn ein Knoten sichtbar ist, sind auch alle seine direkten und indirekten Vorfahren sichtbar. Beim Programmstart kopiere ich nun nur die Knoten in die sichtbare TreeView, die laut Benutzerrrechtetabelle auch sichtbar sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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