1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
{******************************************************************************
gtklistslh.inc
TGtkListStringList and TGtkCListStringList
******************************************************************************
*****************************************************************************
This file is part of the Lazarus Component Library (LCL)
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
type
{ TGtkListStringList }
TGtkListStringsState = (glsItemCacheNeedsUpdate,glsCountNeedsUpdate);
TGtkListStringsStates = set of TGtkListStringsState;
PPGtkListItem = ^PGtkListItem;
TGtkListStringList = class(TStrings)
private
FGtkList : PGtkList;
FOwner: TWinControl;
FSorted : boolean;
FStates: TGtkListStringsStates;
FCachedCount: integer;
FCachedCapacity: integer;
FCachedItems: PPGtkListItem;
FUpdateCount: integer;
FWithCheckBox: Boolean;
protected
function GetListItem(Index: integer): PGtkListItem;
function GetLabel(Index: integer): PGtkLabel;
function GetCount: integer; override;
function Get(Index : Integer) : string; override;
function GetObject(Index: Integer): TObject; override;
procedure Put(Index: Integer; const S: string); override;
procedure PutObject(Index: Integer; AnObject: TObject); override;
procedure SetSorted(Val : boolean); virtual;
procedure CheckForInvalidFocus;
procedure ConnectItemCallbacks(Index: integer);
procedure ConnectItemCallbacks(Li: PGtkListItem); virtual;
procedure ConnectAllCallbacks; virtual;
procedure RemoveItemCallbacks(Index: integer);
procedure RemoveItemCallbacks(AItem: PGtkListItem); virtual;
procedure RemoveAllCallbacks; virtual;
procedure UpdateItemCache;
function CacheValid: boolean;
public
constructor Create(List : PGtkList; TheOwner: TWinControl;
const AWithCheckBox: Boolean);
destructor Destroy; override;
function Add(const S: string): Integer; override;
procedure Assign(Source : TPersistent); override;
procedure Clear; override;
procedure Delete(Index : integer); override;
function IndexOf(const S: string): Integer; override;
procedure Insert(Index : integer; const S: string); override;
function GetInsertPosition(const S: string): integer;
procedure Move(FromIndex, ToIndex: Integer); override;
procedure Sort; virtual;
function IsEqual(List: TStrings; CompareObjects: boolean): boolean;
procedure BeginUpdate;
procedure EndUpdate;
procedure ConsistencyCheck;
public
property Sorted: boolean read FSorted write SetSorted;
property Owner: TWinControl read FOwner;
end;
|