mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 10:59:29 +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);
|
||||
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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user