![]() |
onClick + onDoubleClick
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 |
Re: onClick + onDoubleClick
Du kannst der Eventproperty sogar die selbe Methode zuweisen
|
Re: onClick + onDoubleClick
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:
Und eleganter
procedure TForm1.ActOnClick;
begin // viel schicker Code end; procedure TForm1.Button1Click; begin ActOnClick; end; procedure TForm1.Button2Click; begin ActOnClick; end;
Delphi-Quellcode:
und ActOnClick über den Objekt-Inspektor zuweisen.
procedure TForm1.ActOnClick(Sender: TObject);
begin // viel schicker Code end; ActOnClick ist eine von dir definierte Methode. Heiko |
Re: onClick + onDoubleClick
Zitat:
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; |
Re: onClick + onDoubleClick
Ich würde den Buttons verschiedene Tags verpassen, dann kann man mit
Delphi-Quellcode:
unterscheiden
case Sender.Tag of
... |
Re: onClick + onDoubleClick
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 |
Re: onClick + onDoubleClick
Zitat:
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:
|
Re: onClick + onDoubleClick
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. |
Re: onClick + onDoubleClick
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.
|
Re: onClick + onDoubleClick
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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