Hallo,
ich mache das recht oft aber bin mir eigentlich nicht sicher, ob das Nachteile hat.
Als Beispiel für eine ListBox in OnDrawItem:
Delphi-Quellcode:
Procedure ... DrawItem(Control: TWinControl; Index: Integer;...
Var L : TListBox;
Begin
L := TListBox(Control);
If L.Columns = 0 Then...
End;
Also ich mache sowas gerne, damit der weitere Verlauf im Code abgekürzt ist. Nicht nur bei einer ListBox. Sonst müsste ich in diesem Fall immer "TListBox(Control)." angeben. So ein DrawItem-Ereignis wird ja oft aufgerufen und die zuweisen erfolgt dann natürlich auch immer sehr oft. Aber denke das ist ok so. Man könnte z.B. noch die Zeile "Var L : TListBox;" Global setzen. Wenn ich darauf achte, dass diese Variable "L" nicht woanders genutzt wird, würde dies dann für "OnDrawItem" ein Vorteil sein? Oder ist das ganz egal? Zuweisen muss ich ja sowieso aber das "Var L : TListBox;" wäre dann woanders. Jedenfalls bringt es mir viel im Code (für die Übersicht):
Delphi-Quellcode:
If Index = Ceil(TListBox(Control).ClientHeight / TListBox(Control).ItemHeight)-1+TListBox(Control).TopIndex Then // langer Code
If Index = Ceil(L.ClientHeight / L.ItemHeight)-1+L.TopIndex Then // kurzer Code