Noch mal zurück auf Anfang:
Durch die Hilfe des Forums habe ich eine Procedur bekommen, mit der ich alle Bilder eines Form auf einmal unsichtbar machen kann. Nun spreche ich die Procedur wie folgt an:
Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
begin
leiterauswahl.OnChange := ShowImageHideOther;
end;
{Durch diesen aufruf soll folgende Procedur gestartet werden}
procedure TLeitern.ShowImageHideOther(Image: TImage);
var
i: Integer;
begin
for i := 0 to Pred(ControlCount) do
if (Controls[i] is TImage) then
TImage(Controls[i]).Visible := Controls[i] = Image;
end;
Die Prozedur "ShowImageHideOther" macht mit einer Ausnahme alle Images auf dem Formular unsichtbar. Die Prozedur erwartet das Ausnahme-Image als Parameter, z.B. so:
Delphi-Quellcode:
// alle anderen Bilder unsichtbar
ShowImageHideOther(Image_das_sichtbar_bleiben_soll);
In deinem OnChange-Ereignis bekommst du das Image als Sender übergeben, allerdings als unspezifizierten Typ TObject. Durch einen Cast kann man ein unspezifiziertes Object einer Variablen oder einem Parameter zuweisen, der eine konkrete Klasse verlangt.
Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
begin
// mache nichts wenn Sender kein TImage ist
if Sender is TImage then
ShowImageHideOther(TImage(Sender)); // hard cast
end;
oder
Delphi-Quellcode:
procedure TLeitern.LeiterauswahlChange(Sender: TObject);
begin
// zeige einen Fehler wenn Sender kein TImage ist
ShowImageHideOther(Sender as TImage); // soft cast
end;