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 public
procedure SetDataIndex(ADataIndex: Integer); procedure SetDataIndex(ADataIndex: Integer);
end; 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 } { TListItems }
{ {
@ -825,6 +838,7 @@ type
Partial, Inclusive, Wrap: Boolean; Partial, Inclusive, Wrap: Boolean;
PartStart: Boolean = True): TListItem; PartStart: Boolean = True): TListItem;
function FindData(const AData: Pointer): TListItem; function FindData(const AData: Pointer): TListItem;
function GetEnumerator: TListItemsEnumerator;
function IndexOf(const AItem: TListItem): Integer; function IndexOf(const AItem: TListItem): Integer;
function Insert(const AIndex: Integer) : TListItem; function Insert(const AIndex: Integer) : TListItem;
procedure InsertItem(AItem: TListItem; const AIndex: Integer); procedure InsertItem(AItem: TListItem; const AIndex: Integer);
@ -1589,6 +1603,18 @@ type
property OnStartDrag; property OnStartDrag;
end; 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 } { TToolBar }
@ -1679,6 +1705,7 @@ type
procedure FlipChildren(AllLevels: Boolean); override; procedure FlipChildren(AllLevels: Boolean); override;
procedure BeginUpdate; virtual; procedure BeginUpdate; virtual;
procedure EndUpdate; virtual; procedure EndUpdate; virtual;
function GetEnumerator: TToolBarEnumerator;
procedure Paint; override; procedure Paint; override;
procedure SetButtonSize(NewButtonWidth, NewButtonHeight: integer); procedure SetButtonSize(NewButtonWidth, NewButtonHeight: integer);
function CanFocus: Boolean; override; function CanFocus: Boolean; override;
@ -2118,6 +2145,18 @@ type
property Top: integer read GetTop; property Top: integer read GetTop;
end; 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 } { TTreeNodes }
@ -2187,6 +2226,7 @@ type
function IsMultiSelection: boolean; function IsMultiSelection: boolean;
procedure Delete(Node: TTreeNode); procedure Delete(Node: TTreeNode);
procedure EndUpdate; procedure EndUpdate;
function GetEnumerator: TTreeNodesEnumerator;
function GetFirstNode: TTreeNode; function GetFirstNode: TTreeNode;
function GetLastNode: TTreeNode; // last top level node function GetLastNode: TTreeNode; // last top level node
function GetLastSubNode: TTreeNode; // absolute last node function GetLastSubNode: TTreeNode; // absolute last node
@ -2904,15 +2944,6 @@ const
ScrollBarWidth = 0; ScrollBarWidth = 0;
AllPanelsParts = [Low(TPanelPart)..High(TPanelPart)]; 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 statusbar.inc}
{$I statuspanel.inc} {$I statuspanel.inc}
{$I statuspanels.inc} {$I statuspanels.inc}
@ -2932,4 +2963,71 @@ end;
{$I treeview.inc} {$I treeview.inc}
{$I headercontrol.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. end.

View File

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

View File

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

View File

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