![]() |
SpinEdit - bei gedrückter Maustaste kein OnChange auslösen
Hallo
Ich steh momentan ein wenig auf dem Schlauch. Ich habe ein Spinedit und bei jeder Änderung wird eine etwas lang andauernde Aktion durchgeführt. Wenn der User die Werte mit den Up/down -Schalter verändert, soll die Aktion nur durchgeführt werden, wenn er die Schalter am Ende wieder "losläßt", sonst soll sich nur die Wertanzeige ändern. Und dort haperts. Ich habe im Onchange mir erstmal mit einem
Delphi-Quellcode:
beholfen, dann wird die Aktion nur ausgeführt, wenn der User lange auf einem der Buttons bleibt und zum Schluß losläßt. Leider wird die Aktion nicht ausgeführt, wenn der User nur einmal kurz auf einen der beiden Buttons drückt um den Wert einmal zu ändern.
if GetAsyncKeyState(VK_LBUTTON)=0 then Mach_eine_langwierige_Aktion;
hat jemand eine Idee, wie ich das realiseren könnte? Ich möchte nach Möglichkeit beim Original-spinedit bleiben und in meinem Programm reagieren und nicht die Sourcen ändern. Danke im Voraus Frank |
Re: SpinEdit - bei gedrückter Maustaste kein OnChange auslös
Du könntest es mit einem TUpDown und einem TEdit zusammen versuchen.
Vielleicht hat das TUpDown ein Event, dass dir weiterhilft. mfG mirage228 |
Re: SpinEdit - bei gedrückter Maustaste kein OnChange auslös
Danke, hmm, dort geht es. Dort kann ich auf mousedown und mouseup reagieren und dann würde es gehen.
Allerdings bin ich mit dem Spinedit schon ziemlich weit. Hätte noch jemand ne Alternativ idee? |
Re: SpinEdit - bei gedrückter Maustaste kein OnChange auslös
Du könntest nach Veränderung des Wertes des SpinEdits eine "Pause" (siehe unten) im Programm einlegen, bevor die lange Prozedur ausgeführt wird. Die Pause muss wahrscheinlich nicht mal eine halbe Sekunde lang sein. Falls nun der Wert des SpinEdits vor dem Ende der Pause verändert wird, fängt die Pause von vorne an etc. Notfalls musst du noch von ein paar Boolean-Variablen gebrauch machen. Ich hoffe du weißt so ungefähr was ich meine.
Hier eine Prozedur, die dir das aus Turbo Pascal bekannte "Delay()" simuliert:
Delphi-Quellcode:
procedure Wait(Time: Word);
var Start: Integer; begin Start := GetTickCount; While GetTickCount - Start <= Time do Application.ProcessMessages; end; |
Re: SpinEdit - bei gedrückter Maustaste kein OnChange auslös
Also ein Delay möchte ich nicht einbauen, da könnte ich auch meine Prozedure laufen lassen, das wär das gleiche. Wenn dann könnte ich die Zwischenzeit der Onchanges abfragen , aber das ist mir irgednwie zu ungenau.
Ich habs jetzt anders gemacht, und doch eine eigene Kompoonente anhand des Spinedit-sourcen erstellt, eine zusätzliche Bool-Eigenschaft hinzugefügt und bei timer-ereignis der Hoch-Runterbuttons setzte ich diese und weiß, ob der Click durch den Timer ausgelöst wurde oder normal durch Klicken. Trotzdem Danke für die Vorschläge Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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