Meinst Du einen "Komponenteneditor"?
Das ShowModal könnte man ja leicht ersetzen, aber das könnte die
IDE übel nehmen, da sie ja sozusagen die Kontrolle abgibt. Wenn der Editor offen bleibt und später immer wieder der
IDE ins Handwerk pfuscht ... weiß man nicht.
Delphi-Quellcode:
procedure TssLayoutComponentEditor.ShowDesigner;
var
DesignerForm: TFormSsLayoutEditor;
begin
if (Component is TssLayout) then
begin
DesignerForm := TFormSsLayoutEditor.Create(nil);
try
DesignerForm.ssLayoutIDE := (Component as TssLayout);
DesignerForm.AssignLayoutIDEtoDTE;
DesignerForm.ShowModal;
DesignerForm.AssignLayoutDTEtoIDE;
DesignerForm.ssLayoutIDE := nil;
Designer.Modified;
finally
DesignerForm.Free;
end;
end;
end;
Ich denke, Du musst deutlich tiefer in die Tools
API. Ich habe es zumindest schon mal ansatzweise geschafft, selbst erzeugte Units in mein Projekt zu installieren.
Delphi-Quellcode:
procedure TFormSsFWEditor.CornerButton1Click(Sender: TObject);
var
PackageTest: IOTAPackageServices;
PackageModule: IOTAModule;
UnitModule: IOTAModule;
S: string;
begin
FWEM.FWProject.CreateUnits;
ProjectFileName := FWEM.FWProject.PathProject + FWEM.FWProject.Name + '.dpk';
PackageModule := (BorlandIDEServices as IOTAModuleServices).FindModule(ProjectFileName);
if not Assigned(PackageModule) then
PackageModule := (BorlandIDEServices as IOTAModuleServices).CreateModule(TProjectCreator.Create);
for S in FWEM.FWProject.UnitFileList do
begin
CurrentPackageModule := PackageModule;
UnitFileName := S;
UnitModule := (BorlandIDEServices as IOTAModuleServices).CreateModule(TUnitCreator.Create);
UnitModule.Save(False, True);
end;
PackageModule.Save(False, True);
PackageTest := (BorlandIDEServices as IOTAPackageServices);
PackageTest.InstallPackage(LowerCase(FWEM.FWProject.Name + '.bpl'));
PackageModule.Save(False, True);
Close;
end;
Ein persistentes Formular live parallel mit dem Formulareditor zu syncronisieren wird aber noch um einiges schwerer werden, wenn nicht gar unmöglich sein.
So eine Vorstellung hatte ich im Rahmen meiner Layout-Kompo auch schonmal, dann aber nicht den Mut, das weiter zu denken.
Einige Infos zu Komponenteneditoren gab es hier:
http://docwiki.embarcadero.com/RADSt...machen_-_Index allerdings zur Tools
API gibt es kaum etwas.