Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   mousemove mousedown triggern (https://www.delphipraxis.net/179314-mousemove-mousedown-triggern.html)

Pet04 26. Feb 2014 08:02

Delphi-Version: XE2

mousemove mousedown triggern
 
Hallo,

ich möchte für eine Touchanwendung beim click / mit dem Finger berühren den Button visuell anzeigen lassen wie mit der Maus.
Ich habe gelesen, dass es mit triggen von mousemove zu mousedown funktionieren soll.

Ich habe leider keine Idee wie ich da vorgehen kann.
Wie sieht dass im source code genau aus ?



Gruß

Pet

Der schöne Günther 26. Feb 2014 12:30

AW: mousemove mousedown triggern
 
Hallo-

Eine Suche nach Hier im Forum suchenTouch onMouseMove spuckt eigentlich schon alles aus, was du wissen musst. Hast du das schon entdeckt?

Pet04 26. Feb 2014 14:07

AW: mousemove mousedown triggern
 
das habe ich schon gelesen.
Wie triggere ich onMouseMove manuell onMouseDown ?

Oder gibt es eine andere Lösung clicks auf einen Touch visuell darzustellen ?

baumina 26. Feb 2014 15:00

AW: mousemove mousedown triggern
 
meinst du evtl so etwas?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject) ;
 var
    Pt : TPoint;
 begin
    Application.ProcessMessages;
    {Get the point in the center of Button 2}
    Pt.x := Button2.Left + (Button2.Width div 2) ;
    Pt.y := Button2.Top + (Button2.Height div 2) ;
   {Convert Pt to screen coordinates and Mickeys}
    Pt := ClientToScreen(Pt) ;
    Pt.x := Round(Pt.x * (65535 / Screen.Width)) ;
    Pt.y := Round(Pt.y * (65535 / Screen.Height)) ;
   {Simulate the mouse move}
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or
                MOUSEEVENTF_MOVE,
                Pt.x, Pt.y, 0, 0) ;
gefunden bei : http://delphi.about.com/od/vclusing/a/mouseadvanced.htm

Der schöne Günther 26. Feb 2014 15:53

AW: mousemove mousedown triggern
 
Zitat:

Zitat von Pet04 (Beitrag 1249658)
Ich habe gelesen, dass es mit triggen von mousemove zu mousedown funktionieren soll.

Stimmt, da war nirgendwo konkreter Quelltext. Und "Triggern" hört sich wahnsinnig kompliziert an, ist aber nichts anderes als

Delphi-Quellcode:
procedure TForm2.Panel1MouseDown(..);
begin
   // Was beim Drücken halt passieren soll
end;

procedure TForm2.Panel1MouseMove(..);
begin
   // Multitouch-Anomalie: MouseMove kommt zuerst, mouseDown erst, wenn sich der
   // Zeiger danach bewegt. Und für diese Bewegung muss er erst eine bestimmte
   // Schwelle überschreiten. Deshalb jetzt manuell einen MouseDown erzeugen
   if ssTouch in Shift then
      Panel1MouseDown(Sender, TMouseButton.mbLeft, Shift, X, Y);
end;

Pet04 28. Feb 2014 06:43

AW: mousemove mousedown triggern
 
Hallo,

Danke erst einmal für die schnellen Antworten.
Genau so hatte ich mir das gedacht, aber leider bringt es auf einem Touch nicht das gewünschte Ergebnis.

Wenn man mit dem Finger auf ainen Button clickt, dann soll man es sehen.

Gruß

Pet

Der schöne Günther 28. Feb 2014 17:37

AW: mousemove mousedown triggern
 
Hallo-

Ich habe nochmal etwas geschaut, es geht noch viel einfacher:
  1. Auf dem Parent (im Regelfall das Formular) die Eigenschaft
    Delphi-Quellcode:
    Touch.TabletOptions.toPressAndHold
    auf
    Delphi-Quellcode:
    False
    setzen
  2. Mittels Windows-API die Handballen-Erkennung für die gewünschte Komponente (den Button) abschalten

Delphi-Quellcode:
procedure TForm20.FormCreate(Sender: TObject);
const
   acceptPalms: Boolean = True;
var
   errorCode: Cardinal;
begin

   if acceptPalms and not RegisterTouchWindow(Button1.Handle, TWF_WANTPALM) then begin
      errorCode := GetLastError();
      ShowMessage(SysErrorMessage(errorCode) + '(' + errorCode.ToString() + ')');
   end;

end;
Dann können wir uns auch das manuelle "Triggern" ;-) des onMouseDown sparen. Es war einfach nur die blöde Handballen-Erkennung die dachte, wir würden hier nur versehentlich draufpatschen.

Siehe auch:


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