Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eine Funktion mit der Maus nachfahren (https://www.delphipraxis.net/14204-eine-funktion-mit-der-maus-nachfahren.html)

Schwabe 4. Jan 2004 18:32


Eine Funktion mit der Maus nachfahren
 
Kann man es irgendwie hinbekommen, dass wenn man auf einen button klickt der Mauszeiger auf eine gezeichnete Funktion springt und der x-wert mit Schieben nahc rechts oder links verändert wird und der y-wert aus einer Funktion f(x) genommen wird?

Welches Ereigenis muss ich da denn nehmen MouseMove oder was anderes?




MFg Schwabe

sakura 4. Jan 2004 18:41

Re: Eine Funktion mit der Maus nachfahren
 
Folgender Code sollte Dir einen Ansatz geben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  P: TPoint;
begin
  for I := 0 to 100 do
  begin
    GetCursorPos(P);
    P.X := P.X + 1;
    P.Y := P.Y + 1;
    SetCursorPos(P.X, P.Y);
    Sleep(10);
  end;
end;
...:cat:...

himitsu 4. Jan 2004 18:46

Re: Eine Funktion mit der Maus nachfahren
 
Ich hoffe, ich hab das jetzt richtig verstanden.

Du willst den Mauszeiger mit deinem Programm verschieben ?


Hiermit wird die Mausposition gesetzt:
Delphi-Quellcode:
SetCursorPos(X, Y);
Im Programm z.B. so:
Delphi-Quellcode:
Var X, Y: Integer;

For X := 0 to 100 do Begin
  Y := f(X);
  SetCursorPos(X, Y);
  Application.ProcessMessages;
  Sleep(10);
End;

Niels 4. Jan 2004 18:53

Re: Eine Funktion mit der Maus nachfahren
 
Moin!

Zu der Frage welches Ereignis du nehmen musst...Im OnMove würdest du gleich X- und Y-Position der Maus auf der PaintBox bekommen.

Der Befehl den du dann dort rein schreibst könnte z.B. so aussehen:

Delphi-Quellcode:
  Windows.SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y + Form1.PaintBox1.Height - Y - (f(X)));
f(X) wäre deine Funktion, die du ja im Quelltext weiter oben definieren kannst. z.B:

Delphi-Quellcode:
function f(x: Integer): Integer;
begin
  result := 3 * x;
end;
MfG Niels :thuimb:

Schwabe 4. Jan 2004 19:13

Re: Eine Funktion mit der Maus nachfahren
 
ok vielen Dank. Jetzt werds ich hoffentlich schaffen :-D

Schwabe 14. Jan 2004 13:47

Re: Eine Funktion mit der Maus nachfahren
 
So ich hab des jetzt geschafft, dass man die Funktion nachfahren kann. Jetzt hab ich aber leider nen anderes Problem :(. Sobald das SetCursorPos - Ereignis aktiv ist wird meien Mausposition nicht mehr angezeigt. An was kann das liegen.

Der Code um die Mausposition zu bekommen:
Delphi-Quellcode:
  breite:= ISchaubild.width;
  hoehe:= ISchaubild.height;
  x1:=((x-breite/2)+verposx)/Einheit;
  y1:=((hoehe/2-y)+verposy)/Einheit;
  Statusbar.Panels[0].Text:='Mauszeigerposition ('+FloattoStrf(x1,ffFixed,2,1)+ ' / '
                       + FloatToStrf(y1,ffFixed,2,1) + ')';
Sobald ich jetzt die SetCursoPos aufrufe und mich mit dem Mauszeiger auf der Funktion befinde wird die Position nicht mehr angezeigt!

Brauche dringend Hilfe.

Schwabe 14. Jan 2004 17:21

Re: Eine Funktion mit der Maus nachfahren
 
Kann mir dabei keiner helfen. Bräuchte wirklich möglichst schnell Hilfe

Niels 14. Jan 2004 19:25

Re: Eine Funktion mit der Maus nachfahren
 
Moin!
Du hast den Code sicherlich im OnMouseMove drin. Das wird jedoch soviel ich weiß nicht aufgerufen wenn du die Cursorposition mit SetCursorPos veränderst. Du kanns ja aber die Prozedur zur Mauspositionsanzeige aus der, wo das SetCursorPos steht nach jeder Positionsänderung aufrufen.

MfG Niels

Schwabe 14. Jan 2004 19:48

Re: Eine Funktion mit der Maus nachfahren
 
Also des steht beides in MouseMove. Ich versteh bloß nicht wie du das meinst. Könntest du mir ein Beispiel geben?

Schwabe 15. Jan 2004 11:46

Re: Eine Funktion mit der Maus nachfahren
 
Kann mnir hier niemand weiterhelfen? Ist sehr wichtig!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 1 von 2  1 2      

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