mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-01 21:20:28 +02:00
IDE: added check if Tpersistent property changed to a reference to another unit
git-svn-id: trunk@14824 -
This commit is contained in:
parent
e07aec1513
commit
e9674c8d0e
37
ide/main.pp
37
ide/main.pp
@ -417,6 +417,8 @@ type
|
|||||||
Select: boolean);
|
Select: boolean);
|
||||||
procedure OnPropHookPersistentDeleting(APersistent: TPersistent);
|
procedure OnPropHookPersistentDeleting(APersistent: TPersistent);
|
||||||
procedure OnPropHookDeletePersistent(var APersistent: TPersistent);
|
procedure OnPropHookDeletePersistent(var APersistent: TPersistent);
|
||||||
|
procedure OnPropHookObjectPropertyChanged(Sender: TObject;
|
||||||
|
NewObject: TPersistent);
|
||||||
procedure OnPropHookAddDependency(const AClass: TClass;
|
procedure OnPropHookAddDependency(const AClass: TClass;
|
||||||
const AnUnitName: shortstring);
|
const AnUnitName: shortstring);
|
||||||
procedure OnPropHookGetComponentNames(TypeData: PTypeData;
|
procedure OnPropHookGetComponentNames(TypeData: PTypeData;
|
||||||
@ -1645,6 +1647,7 @@ begin
|
|||||||
GlobalDesignHook.AddHandlerPersistentAdded(@OnPropHookPersistentAdded);
|
GlobalDesignHook.AddHandlerPersistentAdded(@OnPropHookPersistentAdded);
|
||||||
GlobalDesignHook.AddHandlerPersistentDeleting(@OnPropHookPersistentDeleting);
|
GlobalDesignHook.AddHandlerPersistentDeleting(@OnPropHookPersistentDeleting);
|
||||||
GlobalDesignHook.AddHandlerDeletePersistent(@OnPropHookDeletePersistent);
|
GlobalDesignHook.AddHandlerDeletePersistent(@OnPropHookDeletePersistent);
|
||||||
|
GlobalDesignHook.AddHandlerObjectPropertyChanged(@OnPropHookObjectPropertyChanged);
|
||||||
GlobalDesignHook.AddHandlerGetComponentNames(@OnPropHookGetComponentNames);
|
GlobalDesignHook.AddHandlerGetComponentNames(@OnPropHookGetComponentNames);
|
||||||
GlobalDesignHook.AddHandlerGetComponent(@OnPropHookGetComponent);
|
GlobalDesignHook.AddHandlerGetComponent(@OnPropHookGetComponent);
|
||||||
|
|
||||||
@ -13491,6 +13494,40 @@ begin
|
|||||||
APersistent:=nil;
|
APersistent:=nil;
|
||||||
end;
|
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;
|
procedure TMainIDE.OnPropHookAddDependency(const AClass: TClass;
|
||||||
const AnUnitName: shortstring);
|
const AnUnitName: shortstring);
|
||||||
// add a package dependency to the package/project of the currently active
|
// add a package dependency to the package/project of the currently active
|
||||||
|
@ -1341,6 +1341,10 @@ type
|
|||||||
const OnGetObjectNames: TPropHookGetObjectNames);
|
const OnGetObjectNames: TPropHookGetObjectNames);
|
||||||
procedure RemoveHandlerGetObjectNames(
|
procedure RemoveHandlerGetObjectNames(
|
||||||
const OnGetObjectNames: TPropHookGetObjectNames);
|
const OnGetObjectNames: TPropHookGetObjectNames);
|
||||||
|
procedure AddHandlerObjectPropertyChanged(
|
||||||
|
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
|
||||||
|
procedure RemoveHandlerObjectPropertyChanged(
|
||||||
|
const OnObjectPropertyChanged: TPropHookObjectPropertyChanged);
|
||||||
// modifing events
|
// modifing events
|
||||||
procedure AddHandlerModified(const OnModified: TPropHookModified);
|
procedure AddHandlerModified(const OnModified: TPropHookModified);
|
||||||
procedure RemoveHandlerModified(const OnModified: TPropHookModified);
|
procedure RemoveHandlerModified(const OnModified: TPropHookModified);
|
||||||
@ -5872,6 +5876,18 @@ begin
|
|||||||
RemoveHandler(htGetObjectNames,TMethod(OnGetObjectNames));
|
RemoveHandler(htGetObjectNames,TMethod(OnGetObjectNames));
|
||||||
end;
|
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(
|
procedure TPropertyEditorHook.AddHandlerModified(
|
||||||
const OnModified: TPropHookModified);
|
const OnModified: TPropHookModified);
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user