AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vernünftiges resitzverhalten ala Winamp

Ein Thema von EWeiss · begonnen am 26. Mär 2007 · letzter Beitrag vom 30. Mai 2007
Antwort Antwort
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
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#2

Re: Vernünftiges resitzverhalten ala Winamp

  Alt 29. Mai 2007, 22:01
Bin grade ein bisschen faul, jetzt noch über Code nachzudenken, aber ich stelle mir das so vor:

Du hast deine Form und vergrößerst, sagen wir mal ... in der Vertikalen nach unten. Dann speicherst du erstmal den y-Wert. Sobald die Maus 20 Pixel weiter unten/ob ist, lässt du dann ein Resize zu.

So würd's ich machen
Achim
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Vernünftiges resitzverhalten ala Winamp

  Alt 29. Mai 2007, 22:23
Zitat von Aike:
Bin grade ein bisschen faul, jetzt noch über Code nachzudenken, aber ich stelle mir das so vor:

Du hast deine Form und vergrößerst, sagen wir mal ... in der Vertikalen nach unten. Dann speicherst du erstmal den y-Wert. Sobald die Maus 20 Pixel weiter unten/ob ist, lässt du dann ein Resize zu.

So würd's ich machen
Ist zwar schon alt aber gelößt habe ic hes immer noch nicht

Naja ganz so einfach ist das ja auch nicht.
Du mußt 3 Punkte dabei berücksichtigen.

x oder y und 'x plus y'

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von gothic_mike
gothic_mike

Registriert seit: 2. Okt 2003
Ort: Olbernhau
134 Beiträge
 
Delphi 7 Personal
 
#4

Re: Vernünftiges resitzverhalten ala Winamp

  Alt 30. Mai 2007, 10:11
Hi,

viell. so irgendwie in der richtung:

Delphi-Quellcode:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
begin
  if NewHeight > OldH then
    NewHeight := OldH + 20;

  if NewHeight < OldH then
    NewHeight := OldH - 20;

  if NewWidth > OldW then
    NewWidth := OldW + 20;

  if NewWidth < OldW then
    NewWidth := OldW - 20;


  OldW := NewWidth;
  OldH := NewHeight;
  Resize := True;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  OldH := Height;
  OldW := Width;
end;
des macht zwar nicht 100% des, was es soll, aber irgendwie is des schon in die richtung...
muss halt noch etwas verbessert werden.
bye4now, gothic_mike
. ..: carpe noctem :: coding in the darkness :.. .
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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