Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Vernünftiges resitzverhalten ala Winamp

  Alt 26. Mär 2007, 20:01
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
  Mit Zitat antworten Zitat