Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SpeedButton und OnDblclick funktioniert nicht! (https://www.delphipraxis.net/42501-speedbutton-und-ondblclick-funktioniert-nicht.html)

Framige 19. Mär 2005 20:25


SpeedButton und OnDblclick funktioniert nicht!
 
Hi Leute,
irgendwie bin ich zu blöd heute.
Ich habe einen SpeedButton in meiner Anwendung, mit dem ich über OnClick ein Ereignis auslöse.
Soweit so gut.
Wenn ich hier aber über OnDblClick ein Ereignis auslösen will, klappt das nicht.
Ich habe schon alles mögliche versucht. Aber er reagiert einfach auf meinen Doppelclick nicht.
Source:

Procedure TForm2.SpeedButton1DblClick(Sender: TObject);
Begin
showmessage('Klappt.');
end;

Im Objektinspector habe ich SpeedButton1DblClick in OnDblClick eingetragen. Aber es tut sich einfach nichts. Bei OnClick klappt es.
Ich möchte den Button aber gerne mit 2 Funktionen ausstatten.

Was mache ich hier verkehrt???

Pseudemys Nelsoni 19. Mär 2005 20:37

Re: SpeedButton und OnDblclick funktioniert nicht!
 
Liegt wohl daran, das der erste Klick(von deinem Doppelklick) beim loslassen wieder "vergessen" wird, sieht man ja auch am Button der wieder ausrastet.

Stell mal GroupIndex auf irgendwas ausser 0, AllowAllUp auf false und Down auf true...dann siehst du das es geht.... frag mich nicht warum das so ist.. borland halt

MfG

BTW: Du könntest das ganze aber easy selbst machen, mit nem timer

ReDoX 19. Mär 2005 20:40

Re: SpeedButton und OnDblclick funktioniert nicht!
 
Hi,
Bei mir geht das mit dem dblclck auch ned.
Ich habe mir mal eine komplizierte lösung ausgedacht... :coder:
Also Eine Global variable BbClick : Integer.

Delphi-Quellcode:

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 inc(BbClick);
 if BbClick mod 2 = 0 then showmessage('DbCick');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 
 BbClick := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 BbClick := 0;
end;
Das interval des Timers auf ca 500 ms setzt und fertig...das ist vieleicht nicht die eleganteste lösung aber sie funktioniert!
Mfg ReDoX

Framige 19. Mär 2005 20:44

Re: SpeedButton und OnDblclick funktioniert nicht!
 
Zitat:

Zitat von Pseudemys Nelsoni
Stell mal GroupIndex auf irgendwas ausser 0, AllowAllUp auf false und Down auf true...dann siehst du das es geht.... frag mich nicht warum das so ist.. borland halt

Ja du hast Recht. Mit den obigen Eigenschaften klappt es.
Äusserst komisch das...

Diese Lösung hat nur den Nachteil, das das Ereignis OnClick ebenfalls aufgerufen wird.

Die Lösung von ReDoX umgeht allerdings auch dieses Problem. Deshalb sollte man die Variante wählen, will man nicht das Onclick Ereignis auch haben.
Im Test hat sich übrigens ein Intervall von 750 bewährt.

Many Thanks
Framige

Binärbaum 20. Mär 2005 00:46

Re: SpeedButton und OnDblclick funktioniert nicht!
 
Also das mit dem Timer mag ja meistens funktionieren, aber das Wahre ist es auch nicht. Es könnte ja passieren, dass zwischen dem ersten und dem zweiten Klick des Doppelklick der Timer ausgelöst wird, und dann die globale Variable wieder rückgesetzt wird. Da hätte der Benutzer zwar doppelt geklickt, aber das Programm erkennt das nicht. :?

MfG
Binärbaum

Khabarakh 20. Mär 2005 11:32

Re: SpeedButton und OnDblclick funktioniert nicht!
 
Wie wäre es mit GetTickCount?
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if GetTickCount - Ticks < 500 then
    ShowMessage('Doppelklick');
  Ticks := GetTickCount;
end;
Ich denke, auf QueryPerformanceCounter kann man hier verzichten :wink: .


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 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