Hi,
ich bastel mir gerade eine Listbox um die verschiedenen Sprachen die das Programm anwenden kann darzustellen. Dabei soll ein klick auf ein Panel das selbige markieren. Da die Panels zur Laufzeit erstellt werden weiße ich diesen ein OnClick-Event zu. Dieses sieht wie folgt aus:
Delphi-Quellcode:
procedure Tfrmwelcome.SelectLanguageClick(Sender: TObject);
begin
if selected > '' then
begin
(frmwelcome.frmLanguages.FindComponent('pnl'+selected) as TPanel).Color:=clWhite;
Selected:=(Sender as TPanel).Name; //Fehler
(Sender as TPanel).color:=clActiveCaption;
end
else
begin
Selected:=(Sender as TPanel).Name; //Fehler
(Sender as TPanel).color:=clActiveCaption;
end;
end;
Selected ist eine globale Variable vom Typ String. Egal ob ich diese Routine ausführe wenn schon was in Selected drin ist oder nicht, schmiert die procedure an den markierten Stellen ab. Es kommt eine
Exception mit der Meldung: "Ungültige Typenumwandlung". Kann es sein das Sender: TObject gar nicht von selbst übergeben wird? Oder was stimmt nicht? TComponentName = String, oder?