Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Unterscheiden zwischen Doppel- und Einfachklick -Möglich-? (https://www.delphipraxis.net/81458-unterscheiden-zwischen-doppel-und-einfachklick-moeglich.html)

Spynx 27. Nov 2006 19:26


Unterscheiden zwischen Doppel- und Einfachklick -Möglich-?
 
Hallo,
ich habe ein Shape, wenn ich dort einmal draufdrücke führt es einen Befehl aus. Wie kann ich es erreichen, dass bei einem Doppelklick auf das selbe Shape ein andere Befehl ausgeführt wird?

Danke schonmal,
Spynx

inherited 27. Nov 2006 19:33

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Du wirst wohl nicht umhinkommen das selbst zu implementieren. Bei einfachen klick die aktuelle eit oder Tickcount speichern bei erneutem Klick überprüfen, ob die aktuelle Zeit- alte Zeit kleiner als ein bestimmter wert ist.

Martin K 27. Nov 2006 19:38

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Muss es unbedingt ein TShape sein?

Das, was Dein Shape anzeigt, kannste auch mit einem Bitmap in ein TImage laden, da gibts dann die Ereignisse OnClick und OnDblClick.

SirThornberry 27. Nov 2006 19:42

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
bei BDS2006 ist mir aufgefallen das beim Doppelklick das Klickereignis nur einmal ausgeführt wird. Da ich jetzt nicht weiß welche Version du verwendet ist schlecht nachzuvollziehen ob das bei dir genau so ist. Aber ich denke es wird daraus hinauf laufen (wie bereits erwähnt) das du dir den letzten Klick merken musst um zu ermitteln ob ein Doppelklick statt fand.

@martin: Das OnDblClick gibt es auch beim TShape da es vom gleichen Vorfahren ist. Wenn es im OI nicht aufgeführt ist reicht es einfach durch ableiten dieses ins Public/Published zu verschieben und/oder es per Quelltext zu zuweisen.

Spynx 27. Nov 2006 19:46

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
ich habe Delphi 5.00, steht auch über meinem ersten Post ;) dort gibts niergendwo ondblclick, nichtmal bei einem Button...


//edit: Füll-problem schon bewältigt -_-

WIng2005 22. Nov 2007 12:14

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Hallo,

ich habe ein Grid, dass je nach Click bzw. DoubleClick eine unterschiedliche Procedure startet.
Leider wird auch beim OnDlbClick die OnClick-Procedure aufgerufen. Kann ich irgendwie definieren,
welche Click-Geschwindigkeit erreicht sein muss, damit DblClick greift.

MFG
Steffen

inherited 22. Nov 2007 18:49

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Wie stellst du dir das vor? Der Event-Handler weiß ja vorher nicht ob gleich noch ein Klick kommt und deshalb kein OnClick, sondern nur OnDblClick ausgeführt wird.

WIng2005 23. Nov 2007 05:26

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Hast du sonst ne Alternative für mich?
Problemstellung:
In dem Grid werden einige Daten angezeigt. Darunter auch ein Link. OnClick
füllt die Inhalte der Zeile in div. Edits. On DblClick soll den Link öffnen.
Notfalls muss ich rowselect auf false stellen und das Ereignis in Abhänigkeit der
Spalte ausführen. Finde ich aber nicht sonderlich sauber.


MFG
Steffen

Aurelius 23. Nov 2007 06:56

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Man könnte ja zwischen Links- und Rechtsklick unterscheiden. Wäre imho die beste Möglichkeit...

WIng2005 23. Nov 2007 08:08

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Habe jetzt zwischen der Spalte unterschieden. Nur wenn der Link direkt angeklickt wird,
öffnet sich das hinterlegte Dokument.Alles andere krieg ich meinen Usern nicht erklärt.

Trotzdem danke...
MFG
Steffen

hathor 23. Nov 2007 09:05

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Zitat:

Zitat von WIng2005
... Kann ich irgendwie definieren,
welche Click-Geschwindigkeit erreicht sein muss, damit DblClick greift.

MFG
Steffen

Dafür ist das Betriebssystem zuständig(z.B. Win XP)
Doubleklick-Einstellung:
Systemsteuerung->Maus->Doppelklickgeschwindigkeit(Langsam------schnell)

WIng2005 23. Nov 2007 09:13

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Ja, das ist schon klar. Delphi realisiert bei mir nur den Unterschied zw. doppeltem und einfachem Klick nicht.
Es wir bei Doppelklick auch das Klick-Ereignis ausgelöst. Somit dachte ich, dass man Delphi dazu bewegen kann,
nach dem Klick kurz zu warten, ob da etwa noch ein Klick kommt....

MFG
Steffen

OregonGhost 23. Nov 2007 09:58

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Die Frage ist, ob ein Linksklick eine Aktion ausführen sollte, die im Gegensatz zu einem Doppelklick steht. Normalerweise hast du in Situationen, in denen ein Doppelklick auf ein Item dieses z.B. ausführt, im Linksklick nur ein einfaches Anwählen (d.h. eine nicht destruktive Operation).
In diesem Fall könntest du dich an den Office-/Visual-Studio-Standard halten, Strg+Linksklick öffnet Links.

Wieso führt ein Klick auf eine Zelle bei dir eine Aktion für die ganze Zeile aus? Wie bitte kannst du DAS deinen Usern erklären? :stupid:

himitsu 23. Nov 2007 10:09

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Eine Mölichkeit wäre den Prozess bei infachklick nicht sofort auszulösen, sondern Zeitversetzt z.B. über einen Timer.
deim Doppelklick wird der Timer dann wieder beendet und somit wird das Einfachklick(timer)ereignis nicht ausgelöst.
  • Einfachklick > Timer starten mit doppelter Doppelklickdauer laut System (zur Sicherheit etwas länger warten)
  • Doppelklick > Timmer beenden und Doppelklickereignis ausführen
  • Timer abgelaufen > Einfachklickereignis ausführen

WIng2005 23. Nov 2007 15:38

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
@ OregonGhost: Der Gedanke gefällt mir. Werde ich Monatg mal ausprobieren...Danke!!

MFG
Steffen

hathor 23. Nov 2007 16:20

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit folgendem Code kannst Du viele verschiedene Aktionen ausführen, je nachdem, wohin Du im Shape klickst:

Delphi-Quellcode:
function getPos(x,y:integer):TPoint;
const
  w=10; //width
  h=10; //height  
  t=0; //top
  s=1; //space
begin
  result.x:=((x-t) div (w+s) );
  result.y:=((y-t) div (h+s) );
end;
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var r:TPoint; px,py:integer;
begin
  r:=getpos(x,y);
  px:=r.X;
  py:=r.Y;
  x1.Caption :='X = '+ Inttostr(px);
  y1.Caption :='Y = '+ Inttostr(py);
//  if px=1 then...
//  if py=2 then...
//  ...
end;

bitsetter 23. Nov 2007 17:56

Re: Unterscheiden zwischen Doppel- und Einfachklick -Möglic
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Spynx
ich habe Delphi 5.00, steht auch über meinem ersten Post ;) dort gibts niergendwo ondblclick, nichtmal bei einem Button...

Hallo,

das Ereignis onDblClick vom TControl gibt es schon unter Delphi 3. TShape wurde dort auch von TControl abgeleitet.


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