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/)
-   -   Delphi Auf Doppelklick "warten" (https://www.delphipraxis.net/43367-auf-doppelklick-warten.html)

TheReaper 2. Apr 2005 23:05


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;

Binärbaum 2. Apr 2005 23:11

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

TheReaper 2. Apr 2005 23:13

Re: Auf Doppelklick "warten"
 
Hab ich schon durchsucht aber nichts gefunden. :( Sonst hätt ich ja auch nicht ein neuen thread gestartet.

Binärbaum 2. Apr 2005 23:22

Re: Auf Doppelklick "warten"
 
Man könnte das OnClick-Ereignis auch kurzfristig "abstellen":
Delphi-Quellcode:
ListView1.Onclick:= nil;
//hier jetzt irgendwas machen...

//wieder zuweisen:
Listview1.OnClick:= ListView1Click;
MfG
Binärbaum

malo 2. Apr 2005 23:25

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 ;)

Binärbaum 2. Apr 2005 23:30

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

Lannes 2. Apr 2005 23:39

Re: Auf Doppelklick "warten"
 
Hallo,

hilft Dir das weiter?
TMClick123 v 1.0

Christian Seehase 2. Apr 2005 23:40

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;

TheReaper 4. Apr 2005 13:26

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 01:11 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