Registriert seit: 27. Nov 2017
2.490 Beiträge
Delphi 7 Professional
|
AW: Gehen strings als Eigenschaftsnamen? Wenn ja wie?
7. Okt 2018, 12:14
Suchst Du sinngemäß sowas?
Delphi-Quellcode:
uses TypInfo;
procedure SetProperty(AComponent: TComponent; sProperty, sValue: string);
var
PropInfo: PPropInfo;
begin
if Assigned(AComponent) then begin
PropInfo := GetPropInfo(AComponent.ClassInfo, sProperty);
if Assigned(PropInfo) then begin
case PropInfo^.PropType^^.Kind of
tkString,
tkLString,
tkWString: SetStrProp(AComponent, PropInfo, sValue);
tkInteger: SetOrdProp(AComponent, PropInfo, StrToInt(sValue))
else
SetStringsProperty(AComponent, PropInfo, sValue);
end;
end;
end;
end;
procedure SetStringsProperty(AComponent: TComponent;
PropInfo: PPropInfo;
sValues: string);
var
AStrings: TStringList;
sBuffer: string;
i: Integer;
begin
AStrings := TStringList.Create;
i := Pos(FSeparator, sValues);
while (i > 0) do begin
sBuffer := Copy(sValues, 1, i-1);
Delete(sValues, 1, i - 1 + Length(FSeparator));
i := Pos(FSeparator, sValues);
AStrings.Add(Trim(sBuffer));
end;
if (Length(Trim(sValues)) > 0) then AStrings.Add(Trim(sValues));
SetOrdProp(AComponent, PropInfo, LongInt(Pointer(AStrings)));
AStrings.Free;
end;
Im Zweifelsfalle mal die Unit TypInfos (so hieß sie zu Dlephi 7-Zeiten) durchforsten. Da müsste so etliches zum Abfragen uns Setzen von Eigenschaften (über den Namen) drinne sein.
Geändert von Delphi.Narium ( 7. Okt 2018 um 12:33 Uhr)
Grund: Text ergänzt
|
|
Zitat
|