Ja können wir :) Ich habe dies für einen Page-Designer, der nur Textboxen, Regeln (Linien) und Grafiken verwendet, aber es sollte für alle registrierten Steuerelemente funktionieren.
[Aus der Manschette Code Annäherung]
var
i, itemCount: Integer;
AClassName: string;
AnItemClass: TSomeBaseClass;
AnItem: TSomeDrivedBaseClass
ARect: TRect;
begin
// just so we have an initail size
ARect.Left := 100;
ARect.Top := 100;
ARect.Bottom := 200;
ARect.Right := 200;
// Alist is a specialised TStringList
for i := 0 to itemCount - 1 do
begin
AClassName := Alist.ByKey['Class' + IntToStr(i)]; // locate class name
AnItemClass := TSomeBaseClass(GetClass(AClassName)); // ClassName must be registered
AnItem := AnItemClass.Create(OwnerComponent, ARect, AParent);
AnItem.LoadFromFile(IntToStr(i), AList); // specialised loader that reads and sets all necessary properties
AddItemToComponentList(AnItem); // Add to form/frame/panel whatever
end;
end;
Natürlich zuerst ein „Formular-Designer“ benötigen, die zunächst das Design speichern - das Speichern nur die Umkehrung der oben ist ... Ich werde lass das als Übung für den Leser. Mit ein wenig Modifikation könnten Sie Delphi verwenden und die DFM-Datei lesen :)
+1, diese XI-Bibliothek sieht grea t. – mghie
XI scheint meine Anforderungen vollständig zu erfüllen, aber eins. Es ist nicht kostenlos. Ich hätte das in der Frage an erster Stelle erwähnen sollen. – user114285