AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

onClick + onDoubleClick

Ein Thema von yasR · begonnen am 29. Sep 2009 · letzter Beitrag vom 29. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
yasR

Registriert seit: 20. Sep 2009
39 Beiträge
 
#1

onClick + onDoubleClick

  Alt 29. Sep 2009, 07:36
Hallo ihr Lieben,
habe mal wieder zwei Fragen an euch, die ihr mir hoffentlich genauso kopentent beantworten könnt, wie meine letzten Fragen. ^^
Habe jetzt nur die erste, für mich auch wichtigere Frage im Header verwendet, aber trotzdem solltet ihr mir auch Frage 2 beantworten können.

1. Ich habe meinem Button ein onClick zugewiesen, die procedure zu onClick steht wie üblich im Quellcode.
Es kommt aber öfters vor, dass man auf einen Button zweimal klickt und er dann trotz onClick nichts auslöst.
Dieses Problem möchte ich mit onDoubleClick vermeiden. Also möchte ich einer Procedure im Quellcode ein onClick und OnDoubleClick geben.
Da die Anzahl meiner Buttons jetzt nicht gerade wenig sind, müsste ich nach meiner Variante den gleichen Inhalt wie bei der onClick procedure nehmen
und dann wieder eine neue procedure mit onDoubleClick machen. Durch die hohe Anzahl der Buttons, suche ich nach einer schöneren Lösung.


2. Ich habe eine procedure oder Funktion erstellt, die ich jetzt für mehreren Buttons verwenden möchte.
(Bsp machdies(button1),machdies (button2), machdies (Button3)... ). Wie bei Frage eins schon erwähnt, habe ich besonderst
viele Buttons, deshalb suche ich auch hier nach einer edleren Methode.

Viele Grüße
yasR
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 07:39
Du kannst der Eventproperty sogar die selbe Methode zuweisen
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 07:55
Hallo,

1. Ein Button hat kein OnDblClick-Event.
2. siehe mkinzler
das OnClick im Objekt-Inspector ist eine ComboBox
einfach mal aufklappen und bei Button2 z.B. Button1Click auswählen
kein Doppelklick !

Noch zu 1.
Um doppelten Code zu vermeiden.

Delphi-Quellcode:
procedure TForm1.ActOnClick;
begin
 // viel schicker Code
end;

procedure TForm1.Button1Click;
begin
  ActOnClick;
end;

procedure TForm1.Button2Click;
begin
  ActOnClick;
end;
Und eleganter

Delphi-Quellcode:
procedure TForm1.ActOnClick(Sender: TObject);
begin
 // viel schicker Code
end;
und ActOnClick über den Objekt-Inspektor zuweisen.

ActOnClick ist eine von dir definierte Methode.



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 09:01
Zitat:
Delphi-Quellcode:
procedure TForm1.ActOnClick;
begin
// viel schicker Code
end;

procedure TForm1.Button1Click;
begin
  ActOnClick;
end;

procedure TForm1.Button2Click;
begin
  ActOnClick;
end;
wenn schon, dann so, wie mkinzler schon sagte.
eine Prozedur für Alle und diese im IO jeder der Komponenten zuweisen
und in der Prozedur kann man über den Sender rausbekommen, von welcher Komponente diese Ereignisprozedur aufgerufen wurde, bzw. welche Komponente den Aufruf abgesendet hat.
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  if Sender = Button1 then begin
    ...
  end else if Sender = Button2 then begin
    ...

    ...
  end;
end;
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 09:52
Ich würde den Buttons verschiedene Tags verpassen, dann kann man mit

Delphi-Quellcode:
case Sender.Tag of
...
unterscheiden
Markus Kinzler
  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

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 09:56
Wäre hier nicht eine ActionList besser angebracht ("ich habe hier viele Buttons"), und diese Actions dann den Buttons zuweisen?

Dann wäre auch die Möglichkeit gegeben, davon schnell eine Menüleiste oder ein Popup-Menü zu bauen.

cu

Oliver
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
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#7

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 11:09
Zitat von mkinzler:
Ich würde den Buttons verschiedene Tags verpassen, dann kann man mit
TAG finde ich gut weil ich CASE lieber mag als END ELSE IF's.
BTW @himitsu: Ist da absichtlich kein ELSE bei deinem Code?

Aber da muss man dann halt wirklich gut aufpassen, dass man die TAG's auf fein pflegt und so ...

Daher würde ich eher zu der Version von himitsu oder Sir Rufo greifen.

Und wie viele sind denn "besonderst viele Buttons" so ungefähr!? (nur grobe Hausnummer)

EDIT:
Man beachte auch:
Zitat von mkinzler:
Du kannst der Eventproperty sogar die selbe Methode zuweisen
Im OI und auch "automatisiert" zur laufzeit. (z.B. btn.dblClick := btnClick)
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
yasR

Registriert seit: 20. Sep 2009
39 Beiträge
 
#8

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 19:49
Hey, danke für die reichlichen Lösungen, aber kann da leider keine Lösung für mein Problem finden. ^^
PS: Habe mich jetzt für Panels entschieden, da Button ja keine DblClick Event besitzt.

Jedes Panel soll mit der Eigenschaft onClick und DblClick die selbe procedure aufrufen, die einfachste Lösung ist bestimmt diese:
Ich suche allerdings nach etwas besserem

Delphi-Quellcode:

procedure TForm1.Panel1Click(Sender: TObject);
begin

end;

procedure TForm1.Panel1DblClick(Sender: TObject);
begin

end;

procedure TForm1.Panel2Click(Sender: TObject);
begin

end;

procedure TForm1.Panel2DblClick(Sender: TObject);
begin

end;

procedure TForm1.Panel3Click(Sender: TObject);
begin

end;

procedure TForm1.Panel3DblClick(Sender: TObject);
begin

end;


// ..und noch weitere Panels

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 19:52
Du schreibst die Routine genau einmal, wobei Du nicht auf das konkrete Panel, sondern den Sender zugreifst. Diese Routine weist Du dann im OI allen Panels im OnClick und OnDblClick zu... fertig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
yasR

Registriert seit: 20. Sep 2009
39 Beiträge
 
#10

Re: onClick + onDoubleClick

  Alt 29. Sep 2009, 19:58
Hmm.. nach deiner Lösung,wäre aber die Procedure von Panel2 und Panel3 die selbe, oder nicht?

Delphi-Quellcode:
procedure TForm1.Panel2Click(Sender: TObject);
begin

end;

procedure TForm1.Panel2DblClick(Sender: TObject);
begin

end;

procedure TForm1.Panel3Click(Sender: TObject);
begin

end;

procedure TForm1.Panel3DblClick(Sender: TObject);
begin

end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:32 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