Hallo s-off, Hallo Phoenix,
Zitat von
s-off:
Zitat von
Phoenix:
Es könnte eine Variable Namens Rect geben, aber benutzt wird Control.Rect. Eine der bösen Fallen bei with...
Da muss ich DIr leider widersprechen; probier's aus:
Delphi-Quellcode:
Procedure TForm1.MalDas(Control: TControl);
Var
Rect: TRect;
Begin
Rect.Left := 10;
Rect.Top := 10;
Rect.Right := 60;
Rect.Bottom := 60;
//alles was hier drüber steht, kennen wir nicht - könnte ja eine lokale Variable sein *g*
With Control As TListBox Do Begin
Canvas.Brush.Color := clYellow;
Canvas.FillRect(Rect);
Canvas.Font.Color := clRed;
Canvas.TextOut(Rect.Left + 2, Rect.Top, 'Hallo');
End;
End;
Hier wird die lokale Variable Rect zugrunde gelegt.
Phoenix hat im Prinzip Recht -- wenn TListBox ein Property Rect hätte, würde die lokale Variable versteckt. s-offs Beispiel beweist hier nichts, denn erst durch sein Hinzufügen einer lokalen Variable wird das Beispiel kompilierbar. Die ursprüngliche Variante lässt sich wegen des fehlenden TControl.Rect bzw. TListBox.Rect gar nicht übersetzen.
jkr