Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Panel mit Label dynamisch erzeugen (https://www.delphipraxis.net/153305-panel-mit-label-dynamisch-erzeugen.html)

hans ditter 15. Aug 2010 13:18

AW: Panel mit Label dynamisch erzeugen
 
hm, ja gut, dass wäre dann ja zur Designzeit. Was ist aber, wenn ich das Hauptformular während der Laufzeit ändern möchte?
Ich weiß nicht, ob ich mein Problem anschaulich erklärt hab. Ich meine etwas der Art, wie bei einer Installation. Man klickt auf Weiter und dann kommt das nächste Fenster, es sieht aber aus, als ob es immer noch das Gleiche wäre nur mit anderem Inhalt.

DeddyH 16. Aug 2010 09:04

AW: Panel mit Label dynamisch erzeugen
 
Das kannst Du mit einem PageControl hinbekommen, indem Du zwischen den TabSheets weiterschaltest. Für die Optik solltest Du dann TabVisible jeweils auf false setzen.

hans ditter 17. Aug 2010 21:14

AW: Panel mit Label dynamisch erzeugen
 
also irgendwie steh ich jetzt gerade richtig auf dem Schlauch. Ich wollte gerade die Idee von DeddyH mit dem PageControl umsetzten und frag mich gerade, wie ich die Komponenten von meinem Formular auf das PageControl kriege. Ich dachte da wäre eine Eigenschaft Parent oder so, aber nix (... zumindest hab ich nix gefunden ...) :(

Ich steh grad total auf dem Schlauch... wenn mir nochmal jemand helfen könnte... :pale:

thx, hans ditter

DeddyH 18. Aug 2010 08:21

AW: Panel mit Label dynamisch erzeugen
 
Parent müsste aber eigentlich richtig sein. Allerdings dann nicht das PageControl angeben, sondern das entsprechende TabSheet.

hans ditter 25. Aug 2010 19:13

AW: Panel mit Label dynamisch erzeugen
 
Hallo alle zusammen.
Nachdem ich mein Projekt irgendwie komplett in den Sand gesetzt hab und aus lauter Frust es gelöscht habe, fang ich nocheinmal besser strukturiert und motiviert an.
Allerdings hab ich eine Frage.
Ich hab jetzt ein PageControl auf das Formular gepackt, darauf wollte ich ein TabControl packen, da sich nur die Informationen (einige wenige)* ändern.
Allerdings sollen weiterhin die (selbstgeschriebenen) Panels passend zum Inhalt eingefügt werden. Muss der Parent der Panels jetzt auf TabControl oder auf PageControl gesetzt werden. Und wie lass ich alle Panels löschen und neu (passend zum Inhalt) zeichnen?

*eigentlich sind das sogar relativ wenige Informationen. Was wirklich abhängig ist, sind die Panel und 3 Statistikseiten. Wäre dafür vlt ein TabSet geeigneter? Oder sollte ich für die Statistikseiten ein TabControl und für die andere Seite ein TabSet nehmen?

Vielen Dank schonmal, ihr habt mir bei dem (für mich) sehr aufwändigen Projekt schon jetzt schon sehr geholfen. (Hab mir überlegt eine Danksagung in meinem Programm zu verewigen... ;) )

LG, hans ditter

DeddyH 25. Aug 2010 19:16

AW: Panel mit Label dynamisch erzeugen
 
Ein TabControl auf einem PageControl? Das muss ja lustig aussehen. Ich mutmaße jetzt einfach mal, Du hast TabControl und TabSheet verwechselt. Ein TabSheet kannst Du zur Designtime erzeugen, indem Du mit der rechten Maustaste auf das PageControl klickst und "Neue Seite" wählst.

hans ditter 25. Aug 2010 19:27

AW: Panel mit Label dynamisch erzeugen
 
Hm, so lustig sieht das gar nicht aus... :D
Vielleicht mein Projekt nochmal kurz umreissen.
Ich möchte ein Programm schreiben, in dem man sein Konto verwalten kann, also Eingaben, Ausgaben, warum, wann, wie etc.
Außerdem möchte ich damit kombinieren ein Rechner für Arbeitsstunden. Man gibt ein, von wann bis wann man gearbeitet hat und bekommt dann ausgerechent, wie viel man verdient hat etc. (ich hoffe man kann sich sowas vorstellen... ;)). Beim letzten Mal hatte ich diese beiden "Seiten" in versch. Formularen realisiert und dann zwischen denen immer umgeschaltet, aber das hat mir absolut nicht gefallen.
Ich wollte jetzt beim PageControl einfach die Tabs ausblenden und dann alle Seiten, die ich brauche darüber realisieren (das ich dann nur noch zwischen den Tabs wechseln muss).
Ich hab dann auf dem PageControl ein TabControl gepackt, weil ich auch Statistikseiten ausgeben möchte und da hängen ja nunmal alle Ausgaben vom speziellen User des Programms ab(es soll möglich werden, dass mehrere Benutzer das Prog parallel benutzten können).
Vlt hast du noch ein bessere Idee, ich freu mich drauf,
hans ditter

hans ditter 25. Aug 2010 20:03

AW: Panel mit Label dynamisch erzeugen
 
Ok, ich hab gerade mal selber rumprobiert. Bin zu dem Ergebnis gekommen, dass wohl ein TabSet das sinnvollste auf einem PageControl ist. Damit wäre das Problem wohl gelöst, denke ich mal.

Ich hab aber mal eine ganz allgemeine Frage. Muss man irgendwelche Auflagen erfüllen, um ein Projekt hier zu veröffentlichen? Hab mit dem Gedanken gespielt, dass hier mal online zu stellen.

LG, hans ditter

hans ditter 15. Sep 2010 21:02

AW: Panel mit Label dynamisch erzeugen
 
Hi,
ich hab jetzt alles fertig (so mehr oder weniger).... aber mir fehlt die Anordnung der Panels.
Ich möchte 4 Panel nebeneinander setzen, dann eine Reihe tiefer wieder 4 nebeneinander usw.
Weiß aber nicht, wie ich das am Besten löse... :(

Hoffe ihr könnt mir noch einmal helfen (wie so oft... ;))
LG hans ditter

mkinzler 15. Sep 2010 21:07

AW: Panel mit Label dynamisch erzeugen
 
Einfach Breite durch 4 und dann Left jeweils um eine 1/4 weiter rechts

hans ditter 16. Sep 2010 21:40

AW: Panel mit Label dynamisch erzeugen
 
Hm, ja gut, dass hatte ich mir auch schon gedacht... :P
Es ging mir aber vor allem darum, wie ich die Panels untereinander angeordnet kriege. Also das wenn 4 Panels nebeneinander liegen, das nächste in der nächsten Reihe angezeigt wird usw.

stahli 16. Sep 2010 22:02

AW: Panel mit Label dynamisch erzeugen
 
Was ist denn Dein Problem?
X zählst Du jeweils hoch für die X-Position und weist das Left zu.
Nach 4 mal setzt Du X auf 0 und Zählst Y (für Top) hoch.

Alternativ kannst Du auch Panels als "Zeilen" hinzufügen und diese auf alTop setzen.
In jede "Zeile" fügst Du dann 4 Zellen mit alLeft ein.

hans ditter 16. Sep 2010 22:37

AW: Panel mit Label dynamisch erzeugen
 
hm, ja, weiß auch nicht, stand wohl ziemlich auf dem Schlauch...:oops::stupid:
Hat auf jeden Fall funktioniert, jetzt hat sich aber das nächste Probelm ergeben.
Wie bearbeite ich jetzt eine OnClick bzw. OnDblClick Methode des dynamisch erzeugten Panels?

LG, hans ditter

stahli 16. Sep 2010 23:05

AW: Panel mit Label dynamisch erzeugen
 
Du kannst einfach Deiner Form eine "Dummy-Behandlung" hinzufügen. Also mal ein Panel anlegen und die Behandlungen definieren. Das Panel kannst Du dann unsichtbar machen oder löschen.

Deinen dynamischen Panels kannst Du die Ereignisbehandlungen dann einfach zuweisen:
Delphi-Quellcode:
APanel.OnClick := Form1.DummyPanelOnClick;
In der Variable Sender erhältst Du dann das Panel, für das das Ereignis ausgelöst wurde.

Delphi-Quellcode:
if Sender is TPanel then with (Sender as TPanel) do ...

xZise 17. Sep 2010 00:12

AW: Panel mit Label dynamisch erzeugen
 
Ist das Form1 wirklich notwendig? Ich empfehle das einfach nicht mit zu kopieren. Das funktioniert so auch und ist „sicherer“.

MfG Fabian

hans ditter 17. Sep 2010 15:36

AW: Panel mit Label dynamisch erzeugen
 
Vielen Dank erstmal, für die hilfreichen Antworten.
Aber @Stahli,
das mit dem Sender hab ich noch nicht ganz verstanden. Also du sprichst von der Variable Sender in der Dummy Methode? Und was sagt dir mir jetzt oder muss ich der jetzt sagen?
Wenn du mir da nochmal helfen könntest, wäre das super.

LG, hans ditter

stahli 17. Sep 2010 16:01

AW: Panel mit Label dynamisch erzeugen
 
Ich setze mal voraus, dass Du eine Ereignisbehandlung beherrscht (z.B. OnButtonClick).
Darin führst Du ja dann den Code aus.
Wenn Du DIE EINE Behandlung allen Deinen Panels zuweist, musst Du ermitteln, von welchem Panel dieses Ereignis ausgelöst wurde.

Delphi-Quellcode:
if (Sender is TPanel) then with (Sender as TPanel).Color := clRed;
kannst Du das auslösende Panel rot färben.

mkinzler 17. Sep 2010 18:40

AW: Panel mit Label dynamisch erzeugen
 
Wobei man dann das with weglassen kann

stahli 17. Sep 2010 19:01

AW: Panel mit Label dynamisch erzeugen
 
Oh ja, klar, ich wollte erst einen begin-end-Block verwenden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 2 von 2     12   

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