LCL,IDE: Turn TMenuItem.Delete into a function returning the TMenuItem. Delete+Free unused MenuItems correctly in IDE's code. Issue #36776.

git-svn-id: trunk@62728 -
This commit is contained in:
juha 2020-03-09 21:29:06 +00:00
parent 4fe3c9d4be
commit 33ed35c417
4 changed files with 10 additions and 19 deletions

View File

@ -1042,7 +1042,7 @@ begin
end;
// delete not needed items
while fTypePopupMenu.Items.Count>TypeColumn.PickList.Count do
fTypePopupMenu.Items[fTypePopupMenu.Items.Count-1].Free;
fTypePopupMenu.Items.Delete(fTypePopupMenu.Items.Count-1).Free;
XY:=Point(0,0);
i:=TypeColumn.PickList.Count-1;

View File

@ -365,7 +365,7 @@ begin
AddMode(i, Project1.BuildModes[i]);
// remove unused menuitems
while Items.Count > CurIndex do
Items[Items.Count - 1].Free;
Items.Delete(Items.Count-1).Free;
inherited DoPopup(Sender);
end;
@ -448,7 +448,7 @@ begin
end;
// remove unneeded items
while SetDefaultMenuItem.Count>TheIndex do
SetDefaultMenuItem.Items[SetDefaultMenuItem.Count-1].Free;
SetDefaultMenuItem.Items.Delete(SetDefaultMenuItem.Count-1).Free;
end;
class procedure TNewFormUnitToolButton.UpdateHints;

View File

@ -152,26 +152,17 @@ begin
//DebugLn('TMenuItem.CreateHandle END ',Name,':',ClassName);
end;
{------------------------------------------------------------------------------
Method: TMenuItem.Delete
Params: Index:
Returns: Nothing
Description of the procedure for the class.
------------------------------------------------------------------------------}
procedure TMenuItem.Delete(Index: Integer);
var
Cur: TMenuItem;
function TMenuItem.Delete(Index: Integer): TMenuItem;
begin
if (Index < 0) or (FItems = nil) or (Index >= GetCount) then
raise EMenuError.Create(SMenuIndexError);
Cur := TMenuItem(FItems[Index]);
if Cur = nil then
Result := TMenuItem(FItems[Index]);
if Result = nil then
raise EMenuError.Create(SMenuItemIsNil);
Cur.DestroyHandle;
Result.DestroyHandle;
FItems.Delete(Index);
Cur.FParent := nil;
Cur.FOnChange := nil;
Result.FParent := nil;
Result.FOnChange := nil;
InvalidateMergedItems;
MenuChanged(Count = 0);
end;

View File

@ -265,7 +265,7 @@ type
procedure Add(const AItems: array of TMenuItem);
procedure AddSeparator;
procedure Click; virtual;
procedure Delete(Index: Integer);
function Delete(Index: Integer): TMenuItem;
procedure HandleNeeded; virtual;
procedure Insert(Index: Integer; Item: TMenuItem);
procedure RecreateHandle; virtual;