mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 09:19:40 +02:00
lcl: add enumerators for TListItems, TTreeNodes, TToolBar
git-svn-id: trunk@22409 -
This commit is contained in:
parent
dd8b4c7a0b
commit
747db959f4
116
lcl/comctrls.pp
116
lcl/comctrls.pp
@ -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.
|
||||
|
@ -387,6 +387,11 @@ begin
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
function TListItems.GetEnumerator: TListItemsEnumerator;
|
||||
begin
|
||||
Result := TListItemsEnumerator.Create(Self);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------}
|
||||
{ TListItems DefineProperties }
|
||||
{------------------------------------------------------------------------------}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user