mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 13:19:20 +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
|
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.
|
||||||
|
@ -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 }
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user