Also Verschieben geht schonmal:
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?