Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Cursor in Mitte (https://www.delphipraxis.net/23824-cursor-mitte.html)

Mitternachtsfalke 10. Jun 2004 11:36


Cursor in Mitte
 
Hallo
Wie kann ich erreichen, dass der Cursor immer in der Mitte der Form bleibt und
entsprechend scrollt wenn ich die Maus bewege?

gruß 'FALKE

answer 15. Sep 2004 13:27

Re: Cursor in Mitte
 
HI!
Mich interresiert das auch. So etwas wie in Moorhuhn oder so.
Tschau.
p.s.Ich hoffe, dass bald mal ein paar Antworten kommen.

JasonDX 15. Sep 2004 13:37

Re: Cursor in Mitte
 
Das könnt so gehen:
Delphi-Quellcode:
var
  setself: boolean = false;
//...
procedure Form1.OnMouseMove(...);
begin
  setself := not setself;
  if setself do begin
    //Verschieben um x und y (parameter);
    SetCursorPos(MitteDesForms);
  end;
end;
das setself brauchts, da ansonsten durch SetCursorPos das OnMouseMove wieder ausgelöst werden würde, obwohl der benutzer die maus gar nicht bewegt hat. (wär das auch endlosrekursion?)

SleepyMaster 15. Sep 2004 15:46

Re: Cursor in Mitte
 
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (X <> Screen.Width div 2)or(Y <> Screen.Height div 2)then
    begin
    if Y > Screen.Height div 2 then
      Memo1.Lines.Add('Scroll Down');
    if Y < Screen.Height div 2 then
      Memo1.Lines.Add('Scroll Up');
    SetCursorPos(Screen.Width div 2, Screen.Height div 2);
    end;
end;
Hab nur keine Ahnung was du scrollen willst - das mit dem scrollen musst du also selber machen!

JasonDX 15. Sep 2004 16:01

Re: Cursor in Mitte
 
Zitat:

Zitat von SleepyMaster
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (X <> Screen.Width div 2)or(Y <> Screen.Height div 2)then
    begin
    if Y > Screen.Height div 2 then
      Memo1.Lines.Add('Scroll Down');
    if Y < Screen.Height div 2 then
      Memo1.Lines.Add('Scroll Up');
    SetCursorPos(Screen.Width div 2, Screen.Height div 2);
    end;
end;
Hab nur keine Ahnung was du scrollen willst - das mit dem scrollen musst du also selber machen!

Des geht net ganz gut
Das OnMouseMove wird aufgrund des SetCursorPos unendlich lang aufgerufen, auch wenn die Maus nur einmal bewegt wurde.
Lösung: Siehe mein Beitrag oben

SleepyMaster 15. Sep 2004 16:41

Re: Cursor in Mitte
 
Hast vollkommen recht (böse VCL war Schuld! :mrgreen: )

Muss so aussehen:

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  P: TPoint;
  SY, SX: DWORD;
begin
  SX := GetSystemMetrics(SM_CXSCREEN);
  SY := GetSystemMetrics(SM_CYSCREEN);
  GetCursorPos(P);

  if (P.X <> SX div 2)or(P.Y <> SY div 2)then
    begin
    if Y > SY div 2 then
      Memo1.Lines.Add('Scroll Down');
    if Y < SY div 2 then
      Memo1.Lines.Add('Scroll Up');
    SetCursorPos(SX div 2, SY div 2);
    end;
end;

answer 17. Sep 2004 15:01

Re: Cursor in Mitte
 
Danke für die vielen Beiträge, aber ich habe Delphi 3. Da funktioniert fast kein Programm. :oops: .Könnte mir trotzdem jemand bitte Helfen. Ich meine, dass ein Bild im Hintergrund scrollt und der Cursor immer in der Mitte ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz