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 Shape auf Panel oder Panel mit Muster (https://www.delphipraxis.net/111987-shape-auf-panel-oder-panel-mit-muster.html)

hedie 12. Apr 2008 21:37


Shape auf Panel oder Panel mit Muster
 
Hallo

Ich möchte gerne ein Panel mit einem Muster haben.

Dazu habe ich mir ein Shape auf die Form gelegt.
Da Die Panels Dynamisch erzeugt werden und es
durchaus recht viele sein können, habe ich mir gedacht, das ich
zum anzeigen des aktiven Panels, es Mit einem Muster belege.

Das Shape soll dan immer an die Aktive Position verschoben werden.

Die habe ich so gelöst.

Delphi-Quellcode:
Shape1.Left := Panel5.Left;
Shape1.Top := Panel5.Top;
Shape1.Height := Panel5.Height;
Shape1.Width := Panel5.Width;
Shape1.Brush.Style := bsDiagCross;
Shape1.Visible := True;
Shape1.BringToFront;
Jedoch genügt bring to front nicht um es ÜBER dem Panel anzuzeigen.

Hat da jemand eine idee wie ich das Über das Panel zeichnen kann?


Mit diesem Code im MouseDown event Verschiebe ich das Panel

Delphi-Quellcode:
  ReleaseCapture;
  // mit TWinCotrol verschieben, $F012 verschiebt den Button
  TWinControl(Sender).Perform(WM_SYSCOMMAND, $F012, 0);
Wi kann ich dabei das Shape mitverschieben?


Danke schonmal

Fussball-Robby 12. Apr 2008 21:41

Re: Shape auf Panel oder Panel mit Muster
 
weise dem Shape das Panel als Parent zu, dann liegt es auf dem Panel

[Edit]Wenn das Shape dann aber das ganze Panel verdeckt, wird das OnMouseDown des Panels nicht mehr ausgeführt und du kannst das Panel nicht mehr verschieben. DAher müsstest du noch das hier einfügen:
Delphi-Quellcode:
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel1MouseDown(Panel1, Button, Shift, X, Y);
end;
Anstatt Panel1 nimmst du natürlich das aktive Panel :wink: [/Edit]

hedie 12. Apr 2008 21:50

Re: Shape auf Panel oder Panel mit Muster
 
Hmmm gibts keine Lösung ohne Den Panel namen?

Kann man nicht senden an Parent oder so machen?

bitsetter 13. Apr 2008 11:39

Re: Shape auf Panel oder Panel mit Muster
 
Zitat:

Zitat von hedie
Hmmm gibts keine Lösung ohne Den Panel namen?

Kann man nicht senden an Parent oder so machen?

Doch, du weist dem Shape und dem Panel die selbe onMouseDown Prozedur zu und fügst dort folgenen Code ein:
Delphi-Quellcode:
procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  if Sender is TPanel then
    TPanel(Sender).Perform(WM_SYSCOMMAND, $F012, 0)
  else
    TWinControl(Sender).Parent.Perform(WM_SYSCOMMAND, $F012, 0)
end;


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