AGB  ·  Datenschutz  ·  Impressum  







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

TSpeedButton Sender Übergabe Problem

Ein Thema von jdiephaus · begonnen am 20. Apr 2017 · letzter Beitrag vom 23. Apr 2017
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: TSpeedButton Sender Übergabe Problem

  Alt 21. Apr 2017, 14:30
Hoffentlich ist das jetzt besser.
Hallo Nahpets! Habe gerade getestet und bekomme leider immer noch keine Ausgabe. Habe es mit folgendem Minimalbeispiel probiert. Leider wie gesagt ohne Ausgabe auf label1.Caption. Ich weiß wirklich nicht was ich verkehrt mache, aber anscheinend erkennt er die Tags der SpeedButtons nicht.

Code:
procedure TForm1.TsbClick(Sender: TObject);
begin
  if Sender is TSpeedButton then begin
    zeichen := Chr(TSpeedButton(Sender).Tag + 48);
  end;
  label1.Caption := zeichen;
end;
Ich wäre dir wie zuvor sehr dankbar für deine Hilfe!

Schöne Grüße,
jdiephaus
Die Frage die sich hier stellt wäre dann erstmal: Ist Sender ein TSpeedButton, sprich ist diese Bedingung erfüllt:Sender is TSpeedButton .

Also, wie schon von Klaus angedeutet, einen Haltepunkt auf die Zeile zeichen := Chr(TSpeedButton(Sender).Tag + 48); Bleibt der Debugger dort stehen?

Ohne Debugger mal sowas machen:label1.Caption := ClassName; Was steht denn dann im Label?
Ansonsten mal ein ShowMessage(IntToStr(TSpeedButton(Sender).Tag));

Wir müssen letztlich drei Informationen bekommen:

Wird die Routine TsbClick beim Klick auf 'nen Button aufgerufen?
Wird eine Zuweisung auf Zeichen vorgenommen?
Wenn ja, was wird Zeichen zugewiesen?

Prüfe bitte zuerst was Klaus schrieb.
Dann kontrolliere die Zuweisung des Ereignisses, wie Jumpy schrieb.

Wenn dann noch keine Klarheit ist, versuche es mit meinen Vorschlägen.

Kommst Du dann immer noch nicht weiter, hänge bitte das ganze Projekt hier an, damit wir den aktuellen Stand vollständig betrachten können.
  Mit Zitat antworten Zitat
Michael II

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

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
Antwort Antwort


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 08:12 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