Hallo
Ich möchte ein vernünftiges Resitzverhalten wie bei Winamp realisieren.
Also stepweise.
Je nach richtung x,y + 20 Pixel.
So sieht es im moment aus..
Delphi-Quellcode:
procedure Tfrm_Gen.picFormResizeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
begin
if FormFlag = False then
begin
FX := picFormResize.Left + (picFormResize.Width div 2);
FY := picFormResize.Top + (picFormResize.Height div 2);
AX := x;
AY := y;
FormFlag := True;
FormFirst := True;
end;
end;
Delphi-Quellcode:
procedure Tfrm_Gen.picFormResizeMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: integer);
var
posW: Dword;
posH: Dword;
formW: Dword;
formH: Dword;
begin
if FormFlag = True then
begin
// Maus in picFormResize einfangen.
MouseTrap(picFormResize, x, y);
if FormFirst = True then
begin
posW := (FX + x) - x;
end else
posW := (FX + x) - AX;
if FormFirst = True then
begin
posH := (FY + y) - y;
end else
posH := (FY + y) - AY;
if posW < 261 then
posW := 261;
if posH < 99 then
posH := 99;
if FormFirst = True then
begin
FX := FX;
end else
FX := posW;
if FormFirst = True then
begin
FY := FY;
end else
FY := posH;
if FormFirst = False then
begin
picFormResize.Left := FX;
picFormResize.Top := FY;
formW := FX+14;
formH := FY+14;
frm_Gen.Width := formW;
frm_Gen.Height := formH;
end;
// Maus wieder freigeben
MouseTrap_Release;
FormFirst := False;
end;
end;
Delphi-Quellcode:
procedure Tfrm_Gen.picFormResizeMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
begin
FormFlag := False;
end;
Delphi-Quellcode:
procedure Tfrm_Gen.MouseTrap(Sender: TObject; X, Y: integer);
var
R: TRECT;
Image: TImage;
begin
Image := (Sender as TImage);
// Image-Koordinaten in Bildschirmkoordinaten umrechnen
R := Image.ClientRect;
with Image.ClientOrigin do
OffsetRect(R, X, Y);
// Bewegung des Mauszeigers einschränken
ClipCursor(@R);
end;
Delphi-Quellcode:
procedure Tfrm_Gen.MouseTrap_Release;
begin
ClipCursor(nil);
end;
Egal wo ich die 20 pixel addiere das resitzverhalten entspricht nicht dem von Winamp...
Wäre schön wenn jemand eine besser lösung kennen würde.
gruss Emil