Zitat von
dizzy:
Zitat von
mytar:
Upcasten
...geht nicht. (
imho)
Geht ja wohl
Voraussetzung ist allerdings, das das Ding vorher irgendwie (z.B. durch einen Prozeduraufruf) schon heruntergecasted wurde.
Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
// harter upcast
TButton(Sender).Caption := 'clicked';
// soft upcast
(Sender as TButton).Caption := 'clicked';
// ganz sicher:
if sender is TButton then
with sender as TButton do
begin
Caption := 'clicked';
end;
end;
Hier wird ein TObject also hochgecasted, und das in den verschiedenen möglichkeiten. Sowas wird meistens dann verwendet, wenn man ein OnClick-Event für verschiedene Buttons verwendet und / oder mit dem entprechenden Control gleich was machen will (z.B. deaktivieren oder so).