AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TImage Doppelklick bei gesetzten OnClick Event
Thema durchsuchen
Ansicht
Themen-Optionen

TImage Doppelklick bei gesetzten OnClick Event

Ein Thema von Luki206 · begonnen am 31. Aug 2014 · letzter Beitrag vom 21. Sep 2014
Antwort Antwort
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 1. Sep 2014, 18:40
Das zweite 'OnClick'-Event (also beim zeiten Click des Doppelklicks) wird *nicht* ausgelöst. Da kann man keine Verzweigung einbauen.
Ah ja klar, logisch. Stimmt, da stand ich auf dem Schlauch. In dem Fall braucht man wirklich einen "Timer".
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 1. Sep 2014, 22:23
Ich habe hier was Schönes gefunden:
Es nennt sich TRIPLECLICK...
http://blog.unicornsoft.tk/2011/10/t...in-delphi.html

EXE und SOURCE sind im Anhang.

Delphi-Quellcode:
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    ListBox1: TListBox;
    TripleClickTimer: TTimer;
    Memo1: TMemo;
    procedure ListBox1DblClick(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure TripleClickTimerTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
        TripleClick : Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure MM(s:string); begin Form2.Memo1.Lines.Add(s); end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Lines.Add(' ListBox1Click: startet einen Timer');
Memo1.Lines.Add(' ListBox1DblClick: Auswertung');
end;

procedure TForm2.ListBox1Click(Sender: TObject);
begin
  TripleClick := TripleClickTimer.Enabled;
end;

procedure TForm2.ListBox1DblClick(Sender: TObject);
begin
  TripleClick := False;
  TripleClickTimer.Interval := GetDoubleClickTime();
  TripleClickTimer.Enabled := True;
  while TripleClickTimer.Enabled do
    begin
      Application.ProcessMessages;
    end;
  if TripleClick then
    MM ('Triple click on item: ' + ListBox1.Items[ListBox1.ItemIndex])
  Else
    MM ('Double click on item: ' + ListBox1.Items[ListBox1.ItemIndex]);
end;

procedure TForm2.TripleClickTimerTimer(Sender: TObject);
begin
  TripleClickTimer.Enabled := False;
end;
end.
Angehängte Grafiken
Dateityp: jpg TRIPLECL1.jpg (42,6 KB, 9x aufgerufen)
Dateityp: jpg TRIPLECL2.jpg (54,2 KB, 10x aufgerufen)
Angehängte Dateien
Dateityp: zip TRIPLECLICK.zip (711,1 KB, 3x aufgerufen)

Geändert von hathor ( 1. Sep 2014 um 22:31 Uhr)
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#3

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 2. Sep 2014, 09:09
Ok ich komm jetzt nicht mehr mit , brauche ich jetzt den Timer? Wenn ja ist das so wie Hathor es beschrieben hatte die Lösung?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 2. Sep 2014, 09:16
Versuchs auch mal mit meiner. Mit der bekommst Du einen Einfachklick-Ereignis, wenn nur 1x geklickt wurde (und nicht doppelt) oder ein Doppelklick-Ereignis (aber kein Einfachklick), wenn doppelt geklickt wurde. Ich habe dich so verstanden, das Du entweder ein Einfachklick (exklusiv) oder ein Doppelklick-Ereignis haben willst.

Das Tripleklick ist .. hüstel.. ähm... äh. für die Tonne. Wegen dem hier:
Delphi-Quellcode:
while TripleClickTimer.Enabled do
begin
  Application.ProcessMessages;
end;
Da hat jemand eine Lösung auf deibelkommraus gesucht. Sowas geht gar nicht, finde ich. Triple- Quadrupel etc. Clicks kannst Du sehr schön mit hathor's Lösung bekommen, indem Du die 'BU'-IF-Schleife Abfrage anpasst
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#5

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 21. Sep 2014, 10:33
Ok Danke, nur ist das so das ich mit den Hints der Images arbeite und diese ja dann im Timer nicht verfügbar sind (bzw. nicht ohne variablen Gedöns). Gibt es eine Möglichkeit wie ich die Variable umgehen kann oder muss ich es so machen?

Danke Luki

PS: Sorry das ich mich erst jetzt wieder melde aber mein Rechner ist kaputt gegangen und ich habe auf die Schnelle nichts neues Gefunden..
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 21. Sep 2014, 10:49
Was haben denn jetzt die Hints mit dem Klicken zu tun?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#7

AW: TImage Doppelklick bei gesetzten OnClick Event

  Alt 21. Sep 2014, 11:44
Folgendes: Da es mehrere TImage's gibt, muss ich zum unterscheiden diese mit Hints versehen und Prüfe diese dann mit TImage(Sender).Hint ... und wenn ich mir das jetzt ansehe
Delphi-Quellcode:
Procedure TMyForm.FormCreate(Sender : TObject);
Begin
  DeferredClickTimer.Enabled := False;
  DeferredClickTimer.Interval := GetDoubleClickInterval()+50; // Ich glaub, die Methode heißt so.
End;

Procedure TMyForm.MyControlClick(Sender : TObject);
Begin
  DeferredClickTimer.Enabled := False;
  DeferredClickTimer.Enabled := True;
End;

Procedure TMyForm.MyControlDoubleClick(Sender : TObject);
Begin
  DeferredClickTimer.Enabled := False;
  ExecuteTheDoubleClickMethod();
End;
Procedure TMyForm.DeferredClickTimerTimer(Sender : TObject);
Begin
  DeferredClickTimer.Enabled := False;
  ExecuteTheClickMethod();
End;
muss ich ja dann den Hint bzw. den String an den Timer weitergeben und deshalb frage ich ob es nicht eine andere Methode gibt als über eine Variable
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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