![]() |
Überprüfen ob Button gedrückt wurde?
Hallo ich möchte das so haben:
Delphi-Quellcode:
if Button1 gedrückt then mache weiter mit.... Ich hoffe das ist verständlich. |
Re: Überprüfen ob Button gedrückt wurde?
Jawohl, Sir.
Sie haben mehrere Möglichkeiten.
Hätten Sie Ihre Wünsche etwas weiter ausgeführt, so könnte man Ihnen wahrscheinlich die Ideallösung präsentieren. Bitte, wegtreten zu dürfen. |
Re: Überprüfen ob Button gedrückt wurde?
Der Weg über dem Events (callback) ist imho zu bevorzugen.
|
Re: Überprüfen ob Button gedrückt wurde?
Zieh ein Button aufs Formular und mach ein Doppelklick darauf. Dann hast du dein OnClick Ereigniss
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin end; |
Re: Überprüfen ob Button gedrückt wurde?
Ok dann werden ich mein Problem etwas weiter beschreiben:
Der Button sieht so aus: procedure TForm8.button(Sender: TObject); begin ..... end; Ist glaube ich logisch. So nun habe ich 50 davon. Dann möchte ich mit einer IF Abfrage prüfen welche gedrückt wurde. Und dann soll die Caption von dem Button in eine SQL Abfrage untergebracht werden.
Delphi-Quellcode:
Wie ist das am besten möglich?
SELECT * FROM abc WHERE test like "Caption des gedrückten Buttons%" ORDER BY test asc');
|
Re: Überprüfen ob Button gedrückt wurde?
Da würde ich dir eher eine CheckListBox für die Konfiguration deiner Abfrage und einen Button als Auslöser empfehlen.
Grüße vom marabu |
Re: Überprüfen ob Button gedrückt wurde?
Hai Jack23,
um deine Frage zu beantworten: Weise allen Buttons das selbe OnClick Ereigniss zu und arbeite dann mit dem Sender.
Delphi-Quellcode:
procedure TDemo_Form.AllButtonClick(Sender: TObject);
var btn_Caption: string; begin btn_Caption := (Sender as TButton).Caption; end; Ansonsten würde ich aber wohl auch eher mit dem Vorschlag von marabu arbeiten. |
Re: Überprüfen ob Button gedrückt wurde?
Man kann auch für mehrere Buttons die selbe Eventmethode verwenden und mit Sender arbeiten
|
Re: Überprüfen ob Button gedrückt wurde?
Das Problem ist aber das jeder Button eine eigene Procedure hat.
Der eine hat TForm8.abc ein anderer wieder TForm8.dca Die kann ich doch nicht gleichmachen. |
Re: Überprüfen ob Button gedrückt wurde?
Doch indem du anhand des Senders entscheidest, welcher Code ausgeführt werden soll.
|
Re: Überprüfen ob Button gedrückt wurde?
Also ist das genau der Code von Sharky?
Wie mache ich das dann mit IF?
Delphi-Quellcode:
if TButton.Caption = 'test' then
|
Re: Überprüfen ob Button gedrückt wurde?
Zitat:
Zitat:
Delphi-Quellcode:
if (Sender as TButton).Caption = 'test' then
|
Re: Überprüfen ob Button gedrückt wurde?
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM abc WHERE test like :caption ORDER BY test asc';
Query.ParamByName('caption').AsString := (Sender as TButton).Caption + '%'; |
Re: Überprüfen ob Button gedrückt wurde?
Hai Jack23,
Zitat:
Delphi-Quellcode:
procedure TDemo_Form.FormCreate(Sender: TObject);
begin Button1.Tag := 1; Button2.Tag := 2; Button3.Tag := 3; end; procedure TDemo_Form.AllButtonOnClick(Sender: TObject); var btn_Tag : Integer; btn_Caption : String; begin btn_Tag := (Sender as TButton).Tag; btn_Caption := (Sender as TButton).Caption; case btn_Tag of 1 : Mache das; 2 : oder das; 3 : oder das; end; end; |
Re: Überprüfen ob Button gedrückt wurde?
Ok danke euch schon mal. Nur noch eine Frage ich mache das ja in der einen procedur. Nun möchte ich das aber einer anderen nutzen. Gibt es da eine Möglichkeit?
Also die IF Abfrage möchte ich in einer anderen nutzen. Aber mit dem Wert. @ Deddy Ich bnutze eine ADOQuery. Das gibt es doch kein ParamByName oder? Noch mal edit: Ich muss das in einer (Column: TColumn) procedure nutzen. Gibt es da unterschiede? |
Re: Überprüfen ob Button gedrückt wurde?
Den Tag kannst du natürlich auch im OI setzen.
|
Re: Überprüfen ob Button gedrückt wurde?
Zitat:
|
Re: Überprüfen ob Button gedrückt wurde?
Diese ADOQueries machen mich noch wahnsinnig ;). Da mach es lieber so:
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM abc WHERE test like ' + QuotedStr((Sender as TButton).Caption + '%') + ' ORDER BY test asc';
|
Re: Überprüfen ob Button gedrückt wurde?
Oder noch besser mit (SQL-)Parametern:
SQL-Code:
[Edit: Überflüssigen Apostroph entfernt. Danke Deddy]
Query.SQL.Text := 'SELECT * FROM abc WHERE test like :wert ORDER BY test asc';
... Query.Parameters.ParamByName('wert').Value := (Sender as TButton).Caption + '%'; |
Re: Überprüfen ob Button gedrückt wurde?
Bei ADOQueries wird einfach der Value gesetzt (keine Castereien mit AsString)? Hab mich da letztens mit rumgeschlagen und bin dann aus Verzweiflung wieder zum QuotedStr zurückgekehrt.
P.S.: Du hast ein Apostroph zu viel drin ;) |
Re: Überprüfen ob Button gedrückt wurde?
Ok soweit alles klar. Wie übergebe ich das "Sender"?
|
Re: Überprüfen ob Button gedrückt wurde?
Zitat:
|
Re: Überprüfen ob Button gedrückt wurde?
ich meine von einer procedure in die andere.
|
Re: Überprüfen ob Button gedrückt wurde?
Delphi-Quellcode:
Procedure dieZweite( Sender: TObject,; ...);
... dieZweite ( Sender, ...); |
Re: Überprüfen ob Button gedrückt wurde?
Sorry verstehe ich nicht ganz.
Das ist meine erste Procedure oder meine zweite?
Delphi-Quellcode:
Ich steige da nicht ganz durch.
Procedure dieZweite( Sender: TObject,; ...);
... dieZweite ( Sender, ...); Oder kann ich auch dieses nehmen? btn_Caption |
Re: Überprüfen ob Button gedrückt wurde?
Natürlich, aber noch besser den Tag:
Delphi-Quellcode:
Procedure dieZweite( Tag: Integer; ...);
... dieZweite ( btn_Tag, ...); |
Re: Überprüfen ob Button gedrückt wurde?
Ok Danke! Frage ist erledigt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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