Entwickler-Ecke
Sonstiges (Delphi) - Panel vervielfachen
ffgorcky - Sa 24.01.09 15:26
Titel: Panel vervielfachen
Hallo liebe Entwicklergemeinde,
Ich weiß nicht, wieso ich gerade für so eine - auf den ersten Blick einfach erscheinende - Aufgabe keine Lösung weiß.
Vielleicht, weil ich im Moment in meinem damit verbundenen großen Problem zu verbohrt bin...
Ich möchte einfach nur ein Panel anlegen, das ich je nach Anforderung vermehrfachen kann.
Geht das nicht einfach so? Also muss ich dazu denn unbedingt eine Klasse erschaffen?
Ich dachte, dass ich einfach nur in meinem Fenster einaml das Panel erstelle und bei Druck auf einen (Bit-)Button könnte ich das dann einfach nur durch kopieren und löschen der Einträge (auf dem neuen Panel) vervielfachen.
Aber wie geht das?
PS:In Thema
81920 [
http://www.delphi-forum.de/viewtopic.php?t=81920&start=0&postorder=asc] habe ich jetzt auch auf dieses Thema verwiesen...
dummzeuch - Sa 24.01.09 21:52
Titel: Re: Panel vervielfachen
ffgorcky hat folgendes geschrieben : |
Ich möchte einfach nur ein Panel anlegen, das ich je nach Anforderung vermehrfachen kann.
Geht das nicht einfach so? Also muss ich dazu denn unbedingt eine Klasse erschaffen?
Ich dachte, dass ich einfach nur in meinem Fenster einaml das Panel erstelle und bei Druck auf einen (Bit-)Button könnte ich das dann einfach nur durch kopieren und löschen der Einträge (auf dem neuen Panel) vervielfachen.
|
Wenn es Dir dabei nur um ein Panel geht (und nicht um evtl. darauf platzierte Komponenten), dann musst Du lediglich ein neues Panel erzeugen und "irgendwie" die Properties kopieren (wobei der Name nicht mit kopiert werden darf, sonst bekommst Du einen Laufzeitfehler).
Am Einfachsten geht das, wenn Du Dich auf die fuer Dich wichtigen Properties beschraenkst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function CopyPanel(_src: TPanel): TPanel; begin Result := TPanel.Create(_src.Owner); try Result.Parent := _src.Parent; Result.Caption := _src.Caption; except Result.Free; raise; end; end; |
Das kann man beliebig kompliziert machen, z.B. kann man das Source-Panel in einem Stream speichern und in ein neues laden. Ob das aber einfacher ist?
twm
ffgorcky - So 25.01.09 17:34
Nein, ich möchte ja schon gerne die 3 Textboxen und Labels, die darauf sind, mit kopieren.
Die sollen dann immer ein Stückchen weiter eine Liste bilden.
Also, wie kann ich jetzt das erste Panel als Muster nutzen und muss dann nur noch bei der
jeweils durch Kopie erstellten nueuen den Text löschen?
Oder wie kann ich mir selbst solch eine Komponente anlegen?
- Dann würde das ja nach der oben von Ihnen beschriebenen Möglichkeit schon gehen.
Das wäre ja wahrscheinlich sogar noch besser - auch für weitere Probleme in dieser Richtung!
jaenicke - So 25.01.09 17:35
Schau dir einmal Frames an. ;-)
ffgorcky - So 25.01.09 19:20
jaenicke hat folgendes geschrieben : |
| Schau dir einmal Frames an. ;-) |
Dazu wäre mir ein konkreter Link sehr hilfreich.
Danke!
delfiphan - So 25.01.09 19:22
Datei > neu, und dann statt Form oder Unit einfach Frame auswählen.
ffgorcky - Sa 28.02.09 16:35
Und wie binde ich dann das Frame in mein Programm ein?
Also wie kann ich dann sagen, dass ich diese Unit PanelEinsFrame bzw. PanelZweiFrame (abstrakte Namen) an einer bestimmten Stelle im Form erstellen/anzeigen möchte?
Das ist für mich noch ein ganz neues Gebiet.
(Bisher habe ich nur eine maximale Anzahl an Panels gebraucht, die ich dann je nach Anfrage un-/sichtbar gemacht habe.)
Keldorn - Sa 28.02.09 17:33
Hallo,
Du erstellt den Frame, wie von jaenicke beschrieben.
Änderst die Größe, packst alle Komponenten, die Du möchtest, drauf. Du machst dir das Leben später etwas leichter, wenn Du keine Komponente hast, die den Framehintergrund komplett füllt, ansonsten wird das Verschieben etwas schwerer ;-).
Du kannst genauso auf Events der Kompos reagieren.
Wenn du fertig bist, speicherst du den Frame ganz normal und klickst dann den Frame rechts an und wählst "zur Palette hinzufügen" Danach kannst du den Frame wie eine ganz normale Komponente mehrfach auf der Form platzieren oder auch genauso dynamisch erzeugen.
Du kannst auf der Form die einzelnen Komponenten innerhalb des Frames verschieben, wenn das mal ungewünscht war -> Rechtsklick auf den Frame der Form und dann hast Du "geerbte einstellungen wiederherstellen".
Einfach ausprobieren, ist nicht schwer :-)
Gruß Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!