lcl: add TMenuItemEnumerator class, TMenuItem.GetEnumerator method

git-svn-id: trunk@22408 -
This commit is contained in:
paul 2009-11-03 15:49:16 +00:00
parent c0db1937f5
commit dd8b4c7a0b
2 changed files with 37 additions and 0 deletions

View File

@ -215,6 +215,11 @@ begin
Result := Items[Idx];
end;
function TMenuItem.GetEnumerator: TMenuItemEnumerator;
begin
Result := TMenuItemEnumerator.Create(Self);
end;
{------------------------------------------------------------------------------
function TMenuItem.GetImageList: TCustomImageList;

View File

@ -96,6 +96,18 @@ type
TMenuActionLinkClass = class of TMenuActionLink;
{ TMenuItemEnumerator }
TMenuItemEnumerator = class
private
FMenuItem: TMenuItem;
FPosition: Integer;
function GetCurrent: TMenuItem;
public
constructor Create(AMenuItem: TMenuItem);
function MoveNext: Boolean;
property Current: TMenuItem read GetCurrent;
end;
{ TMenuItem }
@ -203,6 +215,7 @@ type
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
function Find(const ACaption: string): TMenuItem;
function GetEnumerator: TMenuItemEnumerator;
function GetImageList: TCustomImageList; virtual;
function GetParentComponent: TComponent; override;
function GetParentMenu: TMenu; virtual;
@ -554,6 +567,25 @@ begin
if ShortCut and scMeta <> 0 then Include(Shift,ssMeta);
end;
{ TMenuItemEnumerator }
function TMenuItemEnumerator.GetCurrent: TMenuItem;
begin
Result := FMenuItem.Items[FPosition];
end;
constructor TMenuItemEnumerator.Create(AMenuItem: TMenuItem);
begin
FMenuItem := AMenuItem;
FPosition := -1;
end;
function TMenuItemEnumerator.MoveNext: Boolean;
begin
inc(FPosition);
Result := FPosition < FMenuItem.Count;
end;
finalization
FreeThenNil(CommandPool);