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/)
-   -   OnClick wird nicht ausgeführt (https://www.delphipraxis.net/167701-onclick-wird-nicht-ausgefuehrt.html)

Bonni 13. Apr 2012 18:17

OnClick wird nicht ausgeführt
 
Hallo beisammen !

Habe mir schon die Finger wund gesucht, aber leider noch keine Hilfe gefunden, deswegen mein Versuch, hier von Euch Antwort zu bekommen. Ich habe ein Programm geschrieben, welches beim Eintritt in ein Editfeld prüft, ob das, was drinnen steht, sinnig ist, beim Verlassen wird ebenfalls eine (andere) Prüfung durchgeführt.
Mit Tastatur getestet gab es keine Probleme, allerdings bei Klick mit der Maus in die Felder treten seltsame Phänomene auf.
Caret wird, obwohl keine Taste gehalten wird, mit der Maus im Eingabefeld bewegt. Je nachdem um was (normales Edit, MaskEdit, SpinEdit) essich handelt auch der Text entsprechend der Mausbewegung markiert.
Habe jetzt herausgefunden, dass, wenn ich verschiedene Sachen bei OnEnter durchführe (Anzeige eine Meldung, längere Berechnung, teilweise auch ein Delay) die OnClick-Meldung unterschlagen wird -> und erst diese platziert den Caret fest im Eingabefeld.
Habe es mit
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
versucht, auch mit Post- und SendMessages aber das OnClick läßt sich nicht simulieren.

Kann mir jemand helfen?

Besten Dank im voraus

Bummi 13. Apr 2012 18:25

AW: OnClick wird nicht ausgeführt
 
klingt als ob Du OnEnter und OnExit verwenden solltest ..

Bonni 13. Apr 2012 18:40

AW: OnClick wird nicht ausgeführt
 
Das mache ich ja. OnClick habe ich noch nie benutzt.
Probier es aus: Wenn Du ein Editfeld hast und bei OnEnter eine ShowMessage absetzt, dann bleibt der Caret mehr oder weniger "in der Luft hängen" und wandert, je nach Mausbewegung, mit. Erst bei einem erneuten reinklicken verhält sich das Editfeld wieder "normal".

DeddyH 13. Apr 2012 18:54

AW: OnClick wird nicht ausgeführt
 
Das kann ich bestätigen. Schnell zusammengeschusterter Workaround:
Delphi-Quellcode:
const PM_MSG = WM_USER + 42;

type
  TForm1 = class(TForm)
    ...
  private
    { Private-Deklarationen }
    procedure PMMsg(var Message: TMessage); message PM_MSG;
    ...
  end;

...

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  PostMessage(Handle, PM_MSG, 0, 0);
end;

procedure TForm1.PMMsg(var Message: TMessage);
begin
  ShowMessage('Enter');
end;
Hth

Bonni 13. Apr 2012 19:10

AW: OnClick wird nicht ausgeführt
 
Suuuper ! Vielen Dank - funktioniert in meinem Testprojekt.

Werde es übers Wochenende in das richtige einbauen.
Arbeite auch mit den LMD-Tools (LMDSpinedit und LMDMaskedit) -> die sind da hartnäckiger. Da klappt es immer noch nicht. Sieht auch aus, als ob da beim reinklicken noch irgend ein Drag-Modus automatisch aktiviert wird (Cursor ändert sich entsprechend).

Werde sie wohl ersetzen müssen ...

Nochmals besten Dank ! ! ! !

himitsu 13. Apr 2012 20:17

AW: OnClick wird nicht ausgeführt
 
Zitat:

Delphi-Quellcode:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
versucht, auch mit Post- und SendMessages aber das OnClick
Wenn ich mir anseh WO du hincklickst, dann wundert es mich nicht, daß dort, wo du es erwartest, kein Klick ankommt. :roll:


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