lcl: add enumerators for TListItems, TTreeNodes, TToolBar

git-svn-id: trunk@22409 -
This commit is contained in:
paul 2009-11-03 16:07:56 +00:00
parent dd8b4c7a0b
commit 747db959f4
4 changed files with 122 additions and 9 deletions

View File

@ -782,6 +782,19 @@ type
public
procedure SetDataIndex(ADataIndex: Integer);
end;
{ TListItemsEnumerator }
TListItemsEnumerator = class
private
FItems: TListItems;
FPosition: Integer;
function GetCurrent: TListItem;
public
constructor Create(AItems: TListItems);
function MoveNext: Boolean;
property Current: TListItem read GetCurrent;
end;
{ TListItems }
{
@ -825,6 +838,7 @@ type
Partial, Inclusive, Wrap: Boolean;
PartStart: Boolean = True): TListItem;
function FindData(const AData: Pointer): TListItem;
function GetEnumerator: TListItemsEnumerator;
function IndexOf(const AItem: TListItem): Integer;
function Insert(const AIndex: Integer) : TListItem;
procedure InsertItem(AItem: TListItem; const AIndex: Integer);
@ -1589,6 +1603,18 @@ type
property OnStartDrag;
end;
{ TToolBarEnumerator }
TToolBarEnumerator = class
private
FToolBar: TToolBar;
FPosition: Integer;
function GetCurrent: TToolButton;
public
constructor Create(AToolBar: TToolBar);
function MoveNext: Boolean;
property Current: TToolButton read GetCurrent;
end;
{ TToolBar }
@ -1679,6 +1705,7 @@ type
procedure FlipChildren(AllLevels: Boolean); override;
procedure BeginUpdate; virtual;
procedure EndUpdate; virtual;
function GetEnumerator: TToolBarEnumerator;
procedure Paint; override;
procedure SetButtonSize(NewButtonWidth, NewButtonHeight: integer);
function CanFocus: Boolean; override;
@ -2118,6 +2145,18 @@ type
property Top: integer read GetTop;
end;
{ TTreeNodesEnumerator }
TTreeNodesEnumerator = class
private
FNodes: TTreeNodes;
FPosition: Integer;
function GetCurrent: TTreeNode;
public
constructor Create(ANodes: TTreeNodes);
function MoveNext: Boolean;
property Current: TTreeNode read GetCurrent;
end;
{ TTreeNodes }
@ -2187,6 +2226,7 @@ type
function IsMultiSelection: boolean;
procedure Delete(Node: TTreeNode);
procedure EndUpdate;
function GetEnumerator: TTreeNodesEnumerator;
function GetFirstNode: TTreeNode;
function GetLastNode: TTreeNode; // last top level node
function GetLastSubNode: TTreeNode; // absolute last node
@ -2904,15 +2944,6 @@ const
ScrollBarWidth = 0;
AllPanelsParts = [Low(TPanelPart)..High(TPanelPart)];
{ Toolbar menu support }
procedure Register;
begin
RegisterComponents('Common Controls',[TTrackbar,TProgressBar,TTreeView,
TListView,TStatusBar,TToolBar,TUpDown,TPageControl,TTabControl, THeaderControl]);
RegisterNoIcon([TToolButton,TTabSheet]);
end;
{$I statusbar.inc}
{$I statuspanel.inc}
{$I statuspanels.inc}
@ -2932,4 +2963,71 @@ end;
{$I treeview.inc}
{$I headercontrol.inc}
{ TTreeNodesEnumerator }
function TTreeNodesEnumerator.GetCurrent: TTreeNode;
begin
Result := FNodes[FPosition];
end;
constructor TTreeNodesEnumerator.Create(ANodes: TTreeNodes);
begin
inherited Create;
FNodes := ANodes;
FPosition := -1;
end;
function TTreeNodesEnumerator.MoveNext: Boolean;
begin
inc(FPosition);
Result := FPosition < FNodes.Count;
end;
{ TListItemsEnumerator }
function TListItemsEnumerator.GetCurrent: TListItem;
begin
Result := FItems[FPosition];
end;
constructor TListItemsEnumerator.Create(AItems: TListItems);
begin
inherited Create;
FItems := AItems;
FPosition := -1;
end;
function TListItemsEnumerator.MoveNext: Boolean;
begin
inc(FPosition);
Result := FPosition < FItems.Count;
end;
{ TToolBarEnumerator }
function TToolBarEnumerator.GetCurrent: TToolButton;
begin
Result := FToolBar.Buttons[FPosition];
end;
constructor TToolBarEnumerator.Create(AToolBar: TToolBar);
begin
inherited Create;
FToolBar := AToolBar;
FPosition := -1;
end;
function TToolBarEnumerator.MoveNext: Boolean;
begin
inc(FPosition);
Result := FPosition < FToolBar.ButtonCount;
end;
procedure Register;
begin
RegisterComponents('Common Controls',[TTrackbar,TProgressBar,TTreeView,
TListView,TStatusBar,TToolBar,TUpDown,TPageControl,TTabControl, THeaderControl]);
RegisterNoIcon([TToolButton,TTabSheet]);
end;
end.

View File

@ -387,6 +387,11 @@ begin
Result := nil;
end;
function TListItems.GetEnumerator: TListItemsEnumerator;
begin
Result := TListItemsEnumerator.Create(Self);
end;
{------------------------------------------------------------------------------}
{ TListItems DefineProperties }
{------------------------------------------------------------------------------}

View File

@ -370,6 +370,11 @@ begin
end;
end;
function TToolBar.GetEnumerator: TToolBarEnumerator;
begin
Result := TToolBarEnumerator.Create(Self);
end;
procedure TToolBar.Paint;
begin
if csDesigning in ComponentState then

View File

@ -2236,6 +2236,11 @@ begin
if FUpdateCount = 0 then SetUpdateState(False);
end;
function TTreeNodes.GetEnumerator: TTreeNodesEnumerator;
begin
Result := TTreeNodesEnumerator.Create(Self);
end;
procedure TTreeNodes.GrowTopLvlItems;
begin
if FTopLvlItems<>nil then begin