![]() |
Elegante Lösung für While-LButton-Pressed-Loop
Hallo!
Gibt es eine elegante Lösung für das Problem eines getriggerten LButtonDown? Folgende Zielstellung: Eine Komponente vergleichbar mit SpinEdit, abgeleitet von TWinControl. Zwei Buttons (allerdings gefaked, nur per StyleServices auf Canvas gepinselte Bildchen). Wenn man auf die Up- bzw. Down-Buttons klickt und gedrückt hält, soll ein Wert hochgezählt werden. Im originalen TSpinEdit ist das letztendlich über Timer gelöst. Nur frage ich mich: Ist das die einzige (vernünftige) Möglichkeit? Gibt es nicht vllt. eine Art wiederkehrender Windows-Message? Grüße Cody |
AW: Elegante Lösung für While-LButton-Pressed-Loop
Zitat:
|
AW: Elegante Lösung für While-LButton-Pressed-Loop
Zitat:
|
AW: Elegante Lösung für While-LButton-Pressed-Loop
Nein, da auch die Hardware nur zwei Events sendet, Button down und Button up, erzeugt auch Windows keine weiteren Botschaften. Da bleibt dann nur ein Timer als Alternative.
...:cat:... |
AW: Elegante Lösung für While-LButton-Pressed-Loop
in der winproc...
Delphi-Quellcode:
im Timer:
case
WM_LBUTTONDOWN: begin gbMouseDown := True; StartTimer; end; WM_LBUTTONUP: gbMouseDown := False; end;
Delphi-Quellcode:
Anstatt Timer ginge auch ein Thread, würde mir besser gefallen ;-)
if gbMouseDown then begin
inc(giCounter); end else begin KillTimer; end; |
AW: Elegante Lösung für While-LButton-Pressed-Loop
Zitat:
Da fällt mir das Keyboard ein, und wenn ich mich recht erinnere, kann das fortlaufende Events generieren. Gruß K-H |
AW: Elegante Lösung für While-LButton-Pressed-Loop
Hier geht es aber um den linken Mouse-Button (genauer gesagt, der in den Mouse-Settings dafür eingestellt wurde):
Zitat:
|
AW: Elegante Lösung für While-LButton-Pressed-Loop
Zitat:
...:cat:... |
AW: Elegante Lösung für While-LButton-Pressed-Loop
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, das Komponentchen ist fertig. Mit zweistufig schnellem Spinbutton-Repeat und absolut
![]() Die Ideenvorlage dafür war der ![]() Die Quellcodes kommen auch noch, will ich nur noch vorher etwas aufhübschen... |
AW: Elegante Lösung für While-LButton-Pressed-Loop
Sieht schick aus :thumb:
|
AW: Elegante Lösung für While-LButton-Pressed-Loop
Liste der Anhänge anzeigen (Anzahl: 2)
Und weil ich schon mal dabei war, hab ich gleich auch noch das ColorWheel nachgebaut. Man beachte das AntiAliasing am Farbrad sowie das farbinvertierte Caret auf dem Farbrad, das ebenfalls antialiased ist. Natürlich wieder ThemeAware, performant und flickerfrei ^^
Im Unterschied zu dem Original im PaintShopPro zeigt das Quadrat in der Mitte aber nicht das HSL-Farbmodell an sondern das HSV-Modell, so wie es auch dem Farbrad entspricht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 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