
ist es möglich, ein TYPE-Casting aus einem Stringfeld zu realisieren?
Also z.B. TYPE of (lv_String) oder TYPE of (ClassName) ??
TYPE OF (ClassName).DataSource := AValue;
Hintergrund:
Für die DB Controls gibt es keine einheitliche Parentklasse, um z.B. die DataSource abzugreifen.
Vielmehr wird die DataSource ja über FDataLink Verwaltet (was auch völlig OK ist).
Wenn ich nun ein TDBControl (TDBEdit) und eine (TDBGrid) in eine TList speichere, kann ich im Loop (FOR i := 0 TO ....) nicht
die DataSource der jeweiligen Komponente abgreifen.
Hier müsste dann ein CASE Block hin. Etwa so, wie im u.a. Beispiel. Das halte ich jedoch für SUB-Optimal. Hier währe ein TYPE Cast über ClassName Sinnvoll.
VAR lo_List : TList;
CASE lo_List.Items[ lv_i ].ClassName OF
TDBEdit : TDBEdit(lo_List.Items[ lv_i ]).DataSource := AValue
TDBGrid : TDBGrid(lo_List.Items[ lv_i ]).DataSource := NIL;
END;
Aber meine Versuche, einen TYPE-CAST mittels "TYPE OF (ClassName, oder ähnliche Konstrukte)", führen alle ins Nirvana (schade).
Anmerkung:
Im alten Delphi war es möglich, das Property "DataSource.Enabled" zu setzen. Dies hat jedoch in den ZEOs Komponenten keinen Einfluss.
Hat jemand von euch eine Idee, für einen Stringbasierten TYPE-Cast?

Viele Grüße
Lorca