Delphi-PRAXiS

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 Panel Dynamisch erzeugen und in Panel anzeigen (https://www.delphipraxis.net/111980-panel-dynamisch-erzeugen-und-panel-anzeigen.html)

hedie 12. Apr 2008 18:23


Panel Dynamisch erzeugen und in Panel anzeigen
 
Hallo

Ich möchte beim Klick auf einen Button ein Panel innerhalb eines
Bestehenden Panels erzeugen und anzeigen lassen.

Bei einem Weiteren Klick soll ein weiteres Panel dazu kommen usw...

Zudem müsste ich einen Code in die Ereignisse der einzelnen Panels schreiben können.

Hat jemand eine idee wie dies zu realisieren ist?

Christian Seehase 12. Apr 2008 18:34

Re: Panel Dynamisch erzeugen und in Panel anzeigen
 
Moin Claudio,

da stellt sich mir die Frage, an welcher Stelle es hakt? :gruebel:

Mit TPanel.Create(nil oder Owner) kannst Du ein Panel erzeugen, und durch die Angabe des Parents stellst Du ein, wo das Panel angezeigt werden soll.
Die Ereignisroutinen müssen schon im Programm vorliegen, und nur noch zugewiesen werden.

Fussball-Robby 12. Apr 2008 18:36

Re: Panel Dynamisch erzeugen und in Panel anzeigen
 
Zitat:

Zitat von Christian Seehase
da stellt sich mir die Frage, an welcher Stelle es hakt? :gruebel:

mir stellt sich eher die Frage, wozu das gut sein soll :gruebel:
Wozu willst du mehrere Panels erzeugen, die dann auf einem anderen Panel liegen? gibt es da keine bessere Möglichkeit?

hedie 12. Apr 2008 18:40

Re: Panel Dynamisch erzeugen und in Panel anzeigen
 
Vielen Dank...

Diese Zeile hab ich nicht geschrieben...

Delphi-Quellcode:
dynButton.ParentWindow := Panel3.Handle;
Aber da drängt sich nun bei mir eine Frage auf.

Ich muss folgende Codes bei den Ereignissen aufrufen:

OnMouseDown
Delphi-Quellcode:
// Mausereignisse abfangen
  ReleaseCapture;
  // mit TWinCotrol verschieben, $F012 verschiebt den Button
  TWinControl(Sender).Perform(WM_SYSCOMMAND, $F012, 0);
OnMouseMove
Delphi-Quellcode:
var
cursorpos:TPoint;
begin
GetCursorPos(cursorpos);
panel5.Caption := ( inttostr((cursorpos.y-Form1.Top-(GroupBox1.Top+Panel3.Top+Panel5.Top+28+Panel5.Height))));
if (cursorpos.y-Form1.Top-(GroupBox1.Top+Panel3.Top+Panel5.Top+27+Panel5.Height)) = 1 then Panel5.Cursor:=crSizeNS;
if (cursorpos.y-Form1.Top-(GroupBox1.Top+Panel3.Top+Panel5.Top+27+Panel5.Height)) <> 1 then Panel5.Cursor:=crDefault
Ich denke mal, das wenn ich da diesen Code Jedesmal in das On.... Ereigniss der Panels schreibe
wird das doch etwas Lastig und ich müsste ja auch z.B. bei OnMouseMove das Panel5.Height ind
PanelXY.Height umändern und wie ich dies Dynamisch machen soll weis ich nicht.

Hast du eine idee wie ich dies Eleganter lösen könnte?


@Fussbal-Robby

Ziel ist es ein Virtuelles Display zu schafen auf welchem
man Buttons, Labels usw. Wie in Delphi Verschieben
erzeugen, resizen und definieren kann.

Dazu fällt mir leider keine bessere Lösung ein.. Dir etwa? :D

wido 12. Apr 2008 19:17

Re: Panel Dynamisch erzeugen und in Panel anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab das mal für Dich ausgecodet.

Das Beispiel erstellt zufällig ein Panel auf einem ParentPanel. Das Panel bekommt eine zufällige Größe, eine zufällige Farbe und eine zufällige Position. Ausserdem wird jedes Panel mit einem OnClick Event Handler versehen, der bei jedem Klick die Farbe des angeklickten Panels ändert. Denke mal, daran solltest Du sehen wie man sowas realisieren kann :).

PS:
Wem mein Coding Stil nicht gefällt, der hat selbst schuld :P.

hedie 12. Apr 2008 19:27

Re: Panel Dynamisch erzeugen und in Panel anzeigen
 
Vielen Vielen Dank

Das war genau das was ich gesucht habe :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 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