Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Button gedrückt halten ?
F34r0fTh3D4rk - Di 17.01.06 19:00
Titel: Button gedrückt halten ?
Hallo, angenommen ich habe einen Button, und in der onclick procedur steht inc(myvar); jetzt möchte ich, aber um nicht so oft klicken zu müssen, diesen button gedrückt halten können, sodass das ganze wiederholt wird, wie mache ich das ?
Gausi - Di 17.01.06 19:14
Auf Anhieb fällt mir da ein: Starte im OnMouseDown einen Timer, und im MouseUp stoppst du ihn wieder. Evtl. das OnMouseUp auch für die übrigen Komponenten nehmen, damit der Timer auch deaktiviert wird, wenn man die Maus beim gedrückt halten vom Button wegbewegt...
Karlson - Di 17.01.06 19:15
schwerer (und sauberer bla :roll: ) gehts bestimmt, aber recht einfach, z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| var bpressed : boolean = false; value : integer = 0;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bpressed := true; while bpressed do begin application.ProcessMessages; sleep(50); inc(value); end; end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bpressed := false; end; |
Viel Spass!
F34r0fTh3D4rk - Di 17.01.06 19:20
danke, für meine 4 buttons mach ich dann ein array ;)
die aktion wird leider erst ausgeführt, wenn ich den button loslasse, also muss ich nen timer nehmen
Damit gehts super DANKE ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!