![]() |
Button-Tag wird nicht erkannt
Hi
ich habe paralell zu diesem Thread ![]() mal versucht eine Lösung für die letzten Post zu erstellen. Wollte den Code da auch eigentlich als Beispiel posten. Nun habe ich aber selbst ein Problem: Das ist mein Code:
Delphi-Quellcode:
Nur Irgendwie bringt die Procedur onButtonClick kein Ergebnis.
unit Test_Unit;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Btn_1: TButton; Btn_2: TButton; Btn_3: TButton; Btn_4: TButton; procedure FormCreate(Sender: TObject); procedure Btn_1Click(Sender: TObject); procedure Btn_2Click(Sender: TObject); procedure Btn_3Click(Sender: TObject); procedure Btn_4Click(Sender: TObject); private { Private-Deklarationen } BtnNumber: Integer; procedure onButtonClick(Sender: TButton); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Randomize; BtnNumber := Random(3); end; procedure TForm1.onButtonClick(Sender: TButton); begin if Sender.Tag = BtnNumber then ShowMessage('Du hast den richtigen Button erwischt!'); end; procedure TForm1.Btn_1Click(Sender: TObject); begin onButtonClick(Btn_1); end; procedure TForm1.Btn_2Click(Sender: TObject); begin onButtonClick(Btn_2); end; procedure TForm1.Btn_3Click(Sender: TObject); begin onButtonClick(Btn_3); end; procedure TForm1.Btn_4Click(Sender: TObject); begin onButtonClick(Btn_4); end; end. Woran liegt das? Schonmal danke. MFG FC ;) |
Re: Button-Tag wird nicht erkannt
Schonmal nen Breakpoint im onButtonClick gesetzt und geguckt, was da so für Werte in Tag und BtnNumber stehen?
Hast du die Tags überhaupt gesetzt? |
Re: Button-Tag wird nicht erkannt
Der Parameter Sender ist vom Typ TComponent du musst ihn zu einem Button casten:
Delphi-Quellcode:
if (Sender as TButton).Tag = ...
|
Re: Button-Tag wird nicht erkannt
Zitat:
|
Re: Button-Tag wird nicht erkannt
Die Eventmethode für den Buttonklick liefert den geklickten Sender als TComponent.
Und OOp heisst das eine abgeleitete Klasse an die Stelle der Superklasse treten kann, aber nicht umgekehrt! |
Re: Button-Tag wird nicht erkannt
Ist es denn schlimm, wenn ich hier den Sender als TButton direkt initialisiere,
Ich übergebe ja auch einen Button ;) Ich habe übrigens die Variable mal in einer MessageBox abgefragt ... der Wert ist drin ... Bitte um weitere Hilfe. MFG FC ;) |
Re: Button-Tag wird nicht erkannt
Aber wozu hast du denn überhaupt nochmal die einzelnen OnClicks? Das ist doch genau was du mit der Unterscheidung nach Sender verhindern willst... So macht das ja gar keinen Sinn. ;-)
Schau doch im Debugger was passiert, setz doch einfach einen Haltepunkt auf das if. |
Re: Button-Tag wird nicht erkannt
Warum weist du nichtbei allen buttons die selbe Methode zu und entscheidest dann per Sender?
|
Re: Button-Tag wird nicht erkannt
Hallo,
poste doch mal das ganze Projekt als Zip ohne Exe (incl. der DFM). Ich sehe nirgendwo, dass du Tag zuweist. Ausserdem liefert Random(3) eine Zahl zwischen 0 und <3 zurück. Heiko |
Re: Button-Tag wird nicht erkannt
Zudem überschneidet sich der Thread themenmässig mit diesem:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 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