Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Überprüfen ob Button gedrückt wurde? (https://www.delphipraxis.net/101278-ueberpruefen-ob-button-gedrueckt-wurde.html)

Jack23 10. Okt 2007 18:09


Ü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.

s-off 10. Okt 2007 18:22

Re: Überprüfen ob Button gedrückt wurde?
 
Jawohl, Sir.

Sie haben mehrere Möglichkeiten.
  • Sie reagieren direkt in dem Event, das ausgelöst wird, sobald der Button gedrückt wird (OnClick)
  • Sie merken sich in einer Variablen, dass der Button gedrückt worden ist, sobald er gedrückt worden ist. Dafür könnten Sie auch die Tag-Eigenschaft des Buttons missbrauchen.

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.

mkinzler 10. Okt 2007 18:23

Re: Überprüfen ob Button gedrückt wurde?
 
Der Weg über dem Events (callback) ist imho zu bevorzugen.

Peeters 10. Okt 2007 18:25

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;

Jack23 10. Okt 2007 18:30

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:
SELECT * FROM abc WHERE test like "Caption des gedrückten Buttons%" ORDER BY test asc');
Wie ist das am besten möglich?

marabu 10. Okt 2007 18:36

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

Sharky 10. Okt 2007 18:38

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.

mkinzler 10. Okt 2007 18:38

Re: Überprüfen ob Button gedrückt wurde?
 
Man kann auch für mehrere Buttons die selbe Eventmethode verwenden und mit Sender arbeiten

Jack23 10. Okt 2007 18:42

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.

mkinzler 10. Okt 2007 18:43

Re: Überprüfen ob Button gedrückt wurde?
 
Doch indem du anhand des Senders entscheidest, welcher Code ausgeführt werden soll.

Jack23 10. Okt 2007 18:46

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

mkinzler 10. Okt 2007 18:48

Re: Überprüfen ob Button gedrückt wurde?
 
Zitat:

Zitat von Jack23
Also ist das genau der Code von Sharky?

Ja.

Zitat:

Wie mache ich das dann mit IF?
Delphi-Quellcode:
if (Sender as TButton).Caption = 'test' then

DeddyH 10. Okt 2007 18:51

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 + '%';

Sharky 10. Okt 2007 18:54

Re: Überprüfen ob Button gedrückt wurde?
 
Hai Jack23,
Zitat:

Zitat von Jack23
...
Delphi-Quellcode:
if TButton.Caption = 'test' then

ich würde versuchen die "Entscheidung" nicht von der Caption abhängig zumachen. Du kannst jedem Button einen eindeutigen Wert in der Eigenschaft Tag zuweisen und dann diese auswerten.

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;

Jack23 10. Okt 2007 19:00

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?

mkinzler 10. Okt 2007 19:02

Re: Überprüfen ob Button gedrückt wurde?
 
Den Tag kannst du natürlich auch im OI setzen.

Sharky 10. Okt 2007 19:02

Re: Überprüfen ob Button gedrückt wurde?
 
Zitat:

Zitat von Jack23
...Also die IF Abfrage möchte ich in einer anderen nutzen....

Dann übergebe deiner Procedure den Wert doch einfach als Parameter.

DeddyH 10. Okt 2007 19:04

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';

mkinzler 10. Okt 2007 19:07

Re: Überprüfen ob Button gedrückt wurde?
 
Oder noch besser mit (SQL-)Parametern:
SQL-Code:
Query.SQL.Text := 'SELECT * FROM abc WHERE test like :wert ORDER BY test asc';
...
Query.Parameters.ParamByName('wert').Value := (Sender as TButton).Caption + '%';
[Edit: Überflüssigen Apostroph entfernt. Danke Deddy]

DeddyH 10. Okt 2007 19:11

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 ;)

Jack23 10. Okt 2007 19:11

Re: Überprüfen ob Button gedrückt wurde?
 
Ok soweit alles klar. Wie übergebe ich das "Sender"?

mkinzler 10. Okt 2007 19:12

Re: Überprüfen ob Button gedrückt wurde?
 
Zitat:

Ok soweit alles klar. Wie übergebe ich das "Sender"?
Das wird automatisch übergeben.

Jack23 10. Okt 2007 19:51

Re: Überprüfen ob Button gedrückt wurde?
 
ich meine von einer procedure in die andere.

mkinzler 10. Okt 2007 19:53

Re: Überprüfen ob Button gedrückt wurde?
 
Delphi-Quellcode:
Procedure dieZweite( Sender: TObject,; ...);

...

dieZweite ( Sender, ...);

Jack23 10. Okt 2007 20:00

Re: Überprüfen ob Button gedrückt wurde?
 
Sorry verstehe ich nicht ganz.

Das ist meine erste Procedure oder meine zweite?
Delphi-Quellcode:
Procedure dieZweite( Sender: TObject,; ...);

...

dieZweite ( Sender, ...);
Ich steige da nicht ganz durch.

Oder kann ich auch dieses nehmen?

btn_Caption

mkinzler 10. Okt 2007 20:04

Re: Überprüfen ob Button gedrückt wurde?
 
Natürlich, aber noch besser den Tag:

Delphi-Quellcode:
Procedure dieZweite( Tag: Integer; ...);

...

dieZweite ( btn_Tag, ...);

Jack23 10. Okt 2007 20:31

Re: Überprüfen ob Button gedrückt wurde?
 
Ok Danke! Frage ist erledigt.


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