ide: fix for TMainMenuComponentEditor edit method. Fix crash of MenuEditor, on edited menu component deleted

git-svn-id: trunk@25611 -
This commit is contained in:
dmitry 2010-05-24 15:17:55 +00:00
parent ea295a4244
commit f9e656e9a1

View File

@ -73,15 +73,12 @@ type
The default component editor for TMenu. } The default component editor for TMenu. }
TMainMenuComponentEditor = class(TComponentEditor) TMainMenuComponentEditor = class(TComponentEditor)
private private
FMenu: TMainMenu;
FDesigner: TComponentEditorDesigner; FDesigner: TComponentEditorDesigner;
protected protected
public public
constructor Create(AComponent: TComponent; constructor Create(AComponent: TComponent;
ADesigner: TComponentEditorDesigner); override; ADesigner: TComponentEditorDesigner); override;
destructor Destroy; override;
procedure Edit; override; procedure Edit; override;
property Menu: TMainMenu read FMenu write FMenu;
function GetVerbCount: Integer; override; function GetVerbCount: Integer; override;
function GetVerb(Index: Integer): string; override; function GetVerb(Index: Integer): string; override;
procedure ExecuteVerb(Index: Integer); override; procedure ExecuteVerb(Index: Integer); override;
@ -175,13 +172,15 @@ begin
if FindRootDesigner(AComponent) <> FDesigner then Exit; if FindRootDesigner(AComponent) <> FDesigner then Exit;
i := List_menus.Items.IndexOf(AComponent.Name); i := List_menus.Items.IndexOf(AComponent.Name);
if i >= 0 then List_menus.Items.Delete(i); if i >= 0 then List_menus.Items.Delete(i);
if AComponent = FMenu then SetMenu(nil);
end; end;
end; end;
procedure TMainMenuEditorForm.OnPersistentAdded(APersistent: TPersistent; procedure TMainMenuEditorForm.OnPersistentAdded(APersistent: TPersistent;
Select: boolean); Select: boolean);
begin begin
debugln('TMainMenuEditorForm.OnPersistentAdded ',dbgsName(APersistent)); //debugln('TMainMenuEditorForm.OnPersistentAdded ',dbgsName(APersistent));
if APersistent is TMenu then if APersistent is TMenu then
UpdateListOfMenus; UpdateListOfMenus;
end; end;
@ -258,15 +257,6 @@ begin
FDesigner := ADesigner; FDesigner := ADesigner;
end; end;
destructor TMainMenuComponentEditor.Destroy;
begin
if (MainMenuEditorForm <> nil) and (MainMenuEditorForm.DesignerMainMenu <> nil)
and (MainMenuEditorForm.DesignerMainMenu.Menu=Component) then
FreeThenNil(MainMenuEditorForm);
inherited Destroy;
end;
procedure TMainMenuComponentEditor.Edit; procedure TMainMenuComponentEditor.Edit;
begin begin
ShowMenuEditor(Component as TMenu); ShowMenuEditor(Component as TMenu);