Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TSpeedButton Sender Übergabe Problem

  Alt 23. Apr 2017, 11:07
Hallo jdiephaus

für jeden deiner SpeedButtons vergibst du im Objektinspektor eine Tag-Nummer.

Du musst nun für einen deiner SpeedButtons im Objektinspektor OnClick auswählen und dann Code reinschreiben

Delphi-Quellcode:
procedure machetwas( z : integer );
begin
  ShowMessage( z.ToString );
end;

procedure TForm52.SpeedButton1Click(Sender: TObject);
var ziffer : integer;
begin
  if Sender is TSpeedButton then
  begin
    ziffer := ( sender as TSpeedButton ).tag;
    machetwas( ziffer );
  end;
end;

Bis jetzt reagiert das Programm nur auf Klicks auf SpeedButton1.

Wenn dein Programm auch auf SpeedButton2 reagieren soll, dann wähle im Objektinspektor für das OnClick Ereignis von SpeedButton2 "SpeedButton1Click" aus. Jetzt reagiert auch SpeedButton2 (via SpeedButton1Click) auf Klicks. Mach's für die weiteren SpeedButtons ähnlich. Fertig.

Noch ein Tipp: Das Setzen und Abfragen der Eigenschaft Tag ist praktisch, wenn du viele Buttons mit ähnlicher Funktion hast.
Wenn du einen Taschenrechner mit vielen Tasten [+,-,*,/,Speichern, Löschen, etc.] baust, dann wird die OnClick Ereignisbehandlungsroutine eventuell übersichtlicher, wenn du für diese Tastenklicks statt den Wert des jeweiligen Tags die Eigenschaft "Name" des Senders auswertest.
Michael Gasser
  Mit Zitat antworten Zitat