![]() |
Auf Doppelklick "warten"
Hallo! :hi:
In einer ListView hab ich mehrere Einträge. Bei einem Click soll mit dem Eintrag was gemacht werden und bei einem Doppelklick etwas anderes. Mein Problem ist, dass wenn man einen Doppelklick macht auch der OnClick Code ausgeführt wird. Das will ich aber nicht. Also entweder ein Klick, oder Doppelt. Kann man da irgendwie auf den Doppelklick "warten"? Also ungefähr so: Procedure TForm1.ListView1Click(Sender: TObject); begin auf dblClick warten if kein dblClick then ... end; |
Re: Auf Doppelklick "warten"
AFAIK wird bei einem Doppelklick auch immer das OnClick-Ereignis ausgelöst und erst danach onDblClick.
Irgendwo gab es aber in der DP schon mal das selbe Problem/ selbe Frage. Ich weiß zwar nicht, ob damals eine Lösung gefunden wurde, aber du kannst ja mal die Forumssuche starten und nachschauen. MfG Binärbaum |
Re: Auf Doppelklick "warten"
Hab ich schon durchsucht aber nichts gefunden. :( Sonst hätt ich ja auch nicht ein neuen thread gestartet.
|
Re: Auf Doppelklick "warten"
Man könnte das OnClick-Ereignis auch kurzfristig "abstellen":
Delphi-Quellcode:
MfG
ListView1.Onclick:= nil;
//hier jetzt irgendwas machen... //wieder zuweisen: Listview1.OnClick:= ListView1Click; Binärbaum |
Re: Auf Doppelklick "warten"
Du kannst das OnDblClick ja "per Hand" machen. Also mit Timer Zeit prüfen, die seit dem Click vergangen ist. Wenn innerhalb von eienr halben Sekunde (oder anderen Abständen) kein zweiter Click passiert ist, wird OnClick ausgelöst, sonst OnDblClick ;)
|
Re: Auf Doppelklick "warten"
Also kommt nur mir das so vor, oder geht es anderen auch so, dass sie meinen genau diesen Vorschlag (Timer) zum selben Thema aber in einem anderen Thread schon gelesen zu haben? :shock:
Wie gesagt, das Thema wurde definitiv schon einmal in der DP besprochen. Nur leider wieß ich nicht mehr, wie der Thread hieß. :| MfG Binärbaum |
Re: Auf Doppelklick "warten"
|
Re: Auf Doppelklick "warten"
Moin Reaper,
probier's mal hiermit:
Delphi-Quellcode:
var
Form1: TForm1; dwDblClickTime : DWORD; fProcessingDblClick : boolean; implementation {$R *.DFM} procedure TForm1.ListView1DblClick(Sender: TObject); begin fProcessingDblClick := true; Label2.Caption := 'DoubleClick'; end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'Reset'; Label2.Caption := 'Reset'; end; procedure TForm1.FormCreate(Sender: TObject); begin dwDblClickTime := GetDoubleClickTime; fProcessingDblClick := false; end; procedure TForm1.ListView1Click(Sender: TObject); var dwDelay : DWORD; begin dwDelay := GetTickCount; While (GetTickCount-dwDelay) < dwDblClickTime do Application.ProcessMessages; if fProcessingDblClick then begin fProcessingDblClick := false; exit; end; Label1.Caption := 'Click'; end; |
Re: Auf Doppelklick "warten"
@Christian:
Das Funktioniert Perfekt! :thumb: Is ja eigentlich ganz einfach. Hätte ich auch ein drauf kommen können. :-D Danke sehr! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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