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 Cursor bei onMouseDown ändern (https://www.delphipraxis.net/52311-cursor-bei-onmousedown-aendern.html)

ManuMF 27. Aug 2005 14:14


Cursor bei onMouseDown ändern
 
Hallo,

wie kann ich den Cursor auf einem Panel bei onMouseDown ändern?
Ich habe schon Form.cursor, Panel.cursor und Cursor := crSizeAll probiert, aber er ändert sich nicht.

Danke,
ManuMF

DBR 27. Aug 2005 14:21

Re: Cursor bei onMouseDown ändern
 
Delphi-Quellcode:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel1.cursor := crHourGlass;
  ReleaseCapture;
end;
Gruß DBR

ManuMF 27. Aug 2005 14:31

Re: Cursor bei onMouseDown ändern
 
Danke, das funktioniert. Nur habe ich jetzt ein anderes Problem:

Delphi-Quellcode:
procedure TForm.PanelMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    FFormMoving := True;
    FMoveStartPos := Point(X, Y);
    Panel.Cursor := crSizeAll;
    ReleaseCapture;
  end;
end;

procedure TForm.PanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if FFormMoving then
    SetWindowPos(Handle, 0,
                 Left + (X - FMoveStartPos.X),
                 Top + (Y - FMoveStartPos.Y),
                 0, 0, SWP_NOSIZE or SWP_NOZORDER);
end;

procedure TForm.PanelMouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    FFormMoving := False;
    Panel.Cursor := crCross;
    ReleaseCapture;
  end;
end;
Ich nutze diesen Code, um das Formular ausgehend von dem Panel zu verschieben. Mit ReleaseCapture bleibt das Formular "stecken", sobald ich die Maus ein bisschen schneller bewege.

Kennt jemand eine Lösung für beide Probleme?

DBR 27. Aug 2005 17:02

Re: Cursor bei onMouseDown ändern
 
Delphi-Quellcode:
const
  FFormMoving: boolean = false;

var
  FMoveStartPos: TPoint;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel.Cursor := crCross;
end;

procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    FFormMoving := True;
    FMoveStartPos := Point(X, Y);
    Panel.Cursor := crSizeAll;
    ReleaseCapture;
    Application.processmessages;
    SetCapture(Panel.handle);
  end;
end;

procedure TForm1.PanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if FFormMoving then
    SetBounds(Left - (FMoveStartPos.x - x), Top - (FMoveStartPos.y - y),
      Width, Height);
end;

procedure TForm1.PanelMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    FFormMoving := False;
    Panel.Cursor := crCross;
  end;
end;
Gruß DBR

ManuMF 27. Aug 2005 19:13

Re: Cursor bei onMouseDown ändern
 
Super, funktioniert! :thumb:


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