Hallo liebe Delphi-Praxis Gemeinde,
ich versuche schon seit Tagen eine Möglichkeit zu finden, wo ich zur Laufzeit, die Eigenschaften eines ausgewählten Controls bearbeiten kann. Sowie bei dem Objektinspektor in Delphi. Halt nur zur Laufzeit. Alle Suchergebnisse hier bei
DP und bei Google haben mich leider nicht weitergebracht. Ich habe das ganze auch schon mit einem ValueListEditor versucht. Wenn ich jedoch die Eigenschaften des ausgewählten Controls mit Values hineinschreibe, werden die Untereinträge wie bei TFonts, TColor, etc... nicht mit aufgeführt. Zum auslesen verwende ich folgenden Code :
Delphi-Quellcode:
var
zl : Integer;
Count, Size : Integer;
List : PPropList;
PropInfo : PPropInfo;
PropOrEvent, PropValue : String;
AComponent : TComponent;
begin
ValueListEditor1.Strings.Clear;
Count := GetPropList(Component.ClassInfo, tkAny, nil);
Size := Count * SizeOf(Pointer);
GetMem(List, Size);
EditorBoolList := TStringList.Create;
EditorBoolList.Add('True');
EditorBoolList.Add('False');
try
Count := GetPropList(Component.ClassInfo, tkAny, List);
for zl := 0 to Count - 1 do
begin
PropInfo := List^[zl];
if PropInfo^.PropType^.Kind in tkMethods then
PropOrEvent := 'Event'
else
PropOrEvent := 'Property';
if PropOrEvent = 'Property' then
begin
PropValue := VarToStr(GetPropValue(Component, PropInfo^.Name));
ValueListEditor1.Strings.Add(PropInfo^.Name + '=' + PropValue);
if (PropInfo^.PropType^.Name = 'Boolean') then
begin
with ValueListEditor1 do
begin
ValueListEditor1.ItemProps[zl].EditStyle := esPickList;
ValueListEditor1.ItemProps[zl].PickList := EditorBoolList;
end;
end;
// PropertyEditor.Add(Format('[%s] %s: %s = %s', [PropOrEvent, PropInfo^.Name,
// PropInfo^.PropType^.Name, PropValue));
end;
end;
finally
Result := ValueListEditor1.Strings;
EditorBoolList.Free;
FreeMem(List);
// PropertyEditor.Free;
end;
Da fängt es schon bei einer einfachen True/False PickList an. Es werden nicht alle Boolschen Werte mit einer PickList versehen.
Deswegen eine dringende Frage an Alle... Da ich sehr unter Zeitdruck stehe, hat jemand eine Lösung für mich bzw. eine brauchbare und sofort einsetzbare Komponente die diese Funktionen erfüllt??? Selbst wenn diese Komponente kostenpflichtig sein sollte wäre das okay (Sollte aber auch in einem entsprechenden Rahmen bleiben)...
Ich bin für jeden Tip oder Hinweis mega Dankbar...!!!
Vielen Dank schonmal...