IDE: added check if Tpersistent property changed to a reference to another unit

git-svn-id: trunk@14824 -
This commit is contained in:
mattias 2008-04-15 10:53:42 +00:00
parent e07aec1513
commit e9674c8d0e
2 changed files with 53 additions and 0 deletions

View File

@ -417,6 +417,8 @@ type
Select: boolean);
procedure OnPropHookPersistentDeleting(APersistent: TPersistent);
procedure OnPropHookDeletePersistent(var APersistent: TPersistent);
procedure OnPropHookObjectPropertyChanged(Sender: TObject;
NewObject: TPersistent);
procedure OnPropHookAddDependency(const AClass: TClass;
const AnUnitName: shortstring);
procedure OnPropHookGetComponentNames(TypeData: PTypeData;
@ -1645,6 +1647,7 @@ begin
GlobalDesignHook.AddHandlerPersistentAdded(@OnPropHookPersistentAdded);
GlobalDesignHook.AddHandlerPersistentDeleting(@OnPropHookPersistentDeleting);
GlobalDesignHook.AddHandlerDeletePersistent(@OnPropHookDeletePersistent);
GlobalDesignHook.AddHandlerObjectPropertyChanged(@OnPropHookObjectPropertyChanged);
GlobalDesignHook.AddHandlerGetComponentNames(@OnPropHookGetComponentNames);
GlobalDesignHook.AddHandlerGetComponent(@OnPropHookGetComponent);
@ -13491,6 +13494,40 @@ begin
APersistent:=nil;
end;
procedure TMainIDE.OnPropHookObjectPropertyChanged(Sender: TObject;
NewObject: TPersistent);
var
AnUnitInfo: TUnitInfo;
NewComponent: TComponent;
ReferenceDesigner: TDesigner;
ReferenceUnitInfo: TUnitInfo;
begin
// check if a TPersistentPropertyEditor was changed
if not (Sender is TPersistentPropertyEditor) then exit;
if not (GlobalDesignHook.LookupRoot is TComponent) then exit;
// find the current unit
AnUnitInfo:=Project1.UnitWithComponent(TComponent(GlobalDesignHook.LookupRoot));
if AnUnitInfo=nil then begin
DebugLn(['TMainIDE.OnPropHookObjectPropertyChanged LookupRoot not found']);
exit;
end;
// find the reference unit
if (NewObject is TComponent) then begin
NewComponent:=TComponent(NewObject);
ReferenceDesigner:=TDesigner(FindRootDesigner(NewComponent));
if ReferenceDesigner=nil then exit;
ReferenceUnitInfo:=Project1.UnitWithComponent(ReferenceDesigner.LookupRoot);
if ReferenceUnitInfo=nil then begin
DebugLn(['TMainIDE.OnPropHookObjectPropertyChanged reference LookupRoot not found']);
exit;
end;
if ReferenceUnitInfo<>AnUnitInfo then begin
// another unit was referenced
// ToDo: add CreateForm statement to main unit (.lpr)
end;
end;
end;
procedure TMainIDE.OnPropHookAddDependency(const AClass: TClass;
const AnUnitName: shortstring);
// add a package dependency to the package/project of the currently active

View File

@ -1341,6 +1341,10 @@ type
const OnGetObjectNames: TPropHookGetObjectNames);
procedure RemoveHandlerGetObjectNames(
const OnGetObjectNames: TPropHookGetObjectNames);
procedure AddHandlerObjectPropertyChanged(
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
procedure RemoveHandlerObjectPropertyChanged(
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
// modifing events
procedure AddHandlerModified(const OnModified: TPropHookModified);
procedure RemoveHandlerModified(const OnModified: TPropHookModified);
@ -5872,6 +5876,18 @@ begin
RemoveHandler(htGetObjectNames,TMethod(OnGetObjectNames));
end;
procedure TPropertyEditorHook.AddHandlerObjectPropertyChanged(
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
begin
AddHandler(htObjectPropertyChanged,TMethod(OnObjectPropertyChanged));
end;
procedure TPropertyEditorHook.RemoveHandlerObjectPropertyChanged(
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
begin
RemoveHandler(htObjectPropertyChanged,TMethod(OnObjectPropertyChanged));
end;
procedure TPropertyEditorHook.AddHandlerModified(
const OnModified: TPropHookModified);
begin