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 Komponenten verschieben (https://www.delphipraxis.net/63667-komponenten-verschieben.html)

Andreas L. 21. Feb 2006 14:28


Komponenten verschieben
 
Hi,
ich möchte eine kleine IDE programmieren. Also der User soll Buttons, Panels, etc. auf ein Form platzieren können und diese auch verschieben und vergrößern können.

Wie ermögliche ich das wenn der User auf einen Button klickt eine neue Komponente (zum Beispiel ein button) auf einen Form eingefügt wird und wie gebe ich den Button solche schwarzen Punkte zum Größe ändern und wie kann der Button verschoben werden?

Delphi-Quellcode:
var
 button : Tbutton;
begin
 button:=Tbutton.create(????);
end;
Schonmal Danke

Andreas L. 21. Feb 2006 17:43

Re: Komponenten verschieben
 
Also Verschieben geht schonmal:

Zitat:

Zitat von Code von Danniolo
Von TWinControl abgeleitete Komponenten können über die Message WM_SysCommand skaliert und verschoben werden. Die Message wird mit der Methode Perform direkt an die Fensterprocedure des Controls gesendet. Die Komponente reagiert dann je nach übergebenem Parameter.
ReleaseCapture kümmert sich um die Verarbeitung der Mausereignisse.

procedure TForm1.WinControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Sender is TWinControl) then
begin
ReleaseCapture; //Fängt alle Mausereignisse ab
TWinControl(Sender).Perform(WM_SysCommand, $F012, 0);
end;
end;

Die Prozedur muss dem OnMouseDown-Ereignis des entsprechenden Controls zugewiesen werden.
Um die Aktion (Verschieben, Skalieren) zu wählen muss dem Parameter WParam von Perform einer der folgenden Werte zugewiesen werden.
TWinControl-Größe ändern, nur linker Rand:
______
| <-|-> Wert: $F001
------
TWinControl Größe ändern, nur rechter Rand:
______
<-|-> | Wert: $F002
------
TWinControl Größe ändern, nur oberer Rand:
^
__|___
| v | Wert: $F003
------
TWinControl Größe ändern, linker u. oberer Rand:
^
__|___
<-|->v | Wert: $F004
------
TWinControl Größe ändern, rechter u. oberer Rand:
^
__|___
| v <-|-> Wert: $F005
------
TWinControl Größe ändern, nur unterer Rand:
______
| ^ | Wert: $F006
--|---
v
TWinControl Größe ändern, linker u. unterer Rand:
______ <-|->^ | Wert: $F007
--|---
v
TWinControl Größe ändern,rechter u. unterer Rand:
______
| ^<-|-> Wert: $F008
---|--
v
TWinControl verschieben:
Wert: $F009
$F011
$F012
TWinControl wird minimiert:
Wert: $F020-$F029
TWinControl füllt den Clientbereich aus:
Wert: $F030 - $F039

Den Code zum Größe verändern habe ich auch schon. Aber wie bekomme ich solche schwarzen Rechtecke an die Buttons um die Größe mit denen zu verändern?

Andreas L. 21. Feb 2006 17:55

Re: Komponenten verschieben
 
Komplettlösung: http://delphi.about.com/library/weekly/aa102505a.htm

Kinimod8 21. Feb 2006 17:58

Re: Komponenten verschieben
 
Geht auch einfacher: Bei Google suchenTControlSizer


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