Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TImage Objekt als Sender nutzen

  Alt 2. Aug 2011, 08:48
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;
  Mit Zitat antworten Zitat