219 lines
6.6 KiB
ObjectPascal
219 lines
6.6 KiB
ObjectPascal
unit spkt_Items;
|
|
|
|
{$mode delphi}
|
|
{.$Define EnhancedRecordSupport}
|
|
|
|
(*******************************************************************************
|
|
* *
|
|
* File: spkt_Items.pas *
|
|
* Description: The module contains the class of panel elements collection. *
|
|
* Copyright: (c) 2009 by Spook. *
|
|
* License: Modified LGPL (with linking exception, like Lazarus LCL) *
|
|
' See "license.txt" in this installation *
|
|
* *
|
|
*******************************************************************************)
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Controls, SysUtils, Dialogs,
|
|
spkt_Appearance, spkt_Dispatch, spkt_BaseItem, spkt_Types,
|
|
spkt_Buttons, spkt_Checkboxes;
|
|
|
|
type
|
|
TSpkItems = class(TSpkCollection)
|
|
private
|
|
FToolbarDispatch: TSpkBaseToolbarDispatch;
|
|
FAppearance: TSpkToolbarAppearance;
|
|
FImages: TImageList;
|
|
FDisabledImages: TImageList;
|
|
FLargeImages: TImageList;
|
|
FDisabledLargeImages: TImageList;
|
|
FImagesWidth: Integer;
|
|
FLargeImagesWidth: Integer;
|
|
|
|
// *** Getters and setters ***
|
|
procedure SetToolbarDispatch(const Value: TSpkBaseToolbarDispatch);
|
|
function GetItems(AIndex: integer): TSpkBaseItem; reintroduce;
|
|
procedure SetAppearance(const Value: TSpkToolbarAppearance);
|
|
procedure SetImages(const Value: TImageList);
|
|
procedure SetDisabledImages(const Value: TImageList);
|
|
procedure SetLargeImages(const Value: TImageList);
|
|
procedure SetDisabledLargeImages(const Value: TImageList);
|
|
procedure SetImagesWidth(const Value: Integer);
|
|
procedure SetLargeImagesWidth(const Value: Integer);
|
|
|
|
public
|
|
function AddLargeButton: TSpkLargeButton;
|
|
function AddSmallButton: TSpkSmallButton;
|
|
function AddCheckbox: TSpkCheckbox;
|
|
function AddRadioButton: TSpkRadioButton;
|
|
|
|
// *** Reaction to changes in the list ***
|
|
procedure Notify(Item: TComponent; Operation: TOperation); override;
|
|
procedure Update; override;
|
|
|
|
property Items[index: integer]: TSpkBaseItem read GetItems; default;
|
|
property ToolbarDispatch: TSpkBaseToolbarDispatch read FToolbarDispatch write SetToolbarDispatch;
|
|
property Appearance: TSpkToolbarAppearance read FAppearance write SetAppearance;
|
|
property Images: TImageList read FImages write SetImages;
|
|
property DisabledImages: TImageList read FDisabledImages write SetDisabledImages;
|
|
property LargeImages: TImageList read FLargeImages write SetLargeImages;
|
|
property DisabledLargeImages: TImageList read FDisabledLargeImages write SetDisabledLargeImages;
|
|
property ImagesWidth: Integer read FImagesWidth write SetImagesWidth;
|
|
property LargeImagesWidth: Integer read FLargeImagesWidth write SetLargeImagesWidth;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TSpkItems }
|
|
|
|
function TSpkItems.AddLargeButton: TSpkLargeButton;
|
|
begin
|
|
Result := TSpkLargeButton.Create(FRootComponent);
|
|
Result.Parent := FRootComponent;
|
|
AddItem(Result);
|
|
end;
|
|
|
|
function TSpkItems.AddSmallButton: TSpkSmallButton;
|
|
begin
|
|
Result := TSpkSmallButton.Create(FRootComponent);
|
|
Result.Parent := FRootComponent;
|
|
AddItem(Result);
|
|
end;
|
|
|
|
function TSpkItems.AddCheckbox: TSpkCheckbox;
|
|
begin
|
|
Result := TSpkCheckbox.Create(FRootComponent);
|
|
Result.Parent := FRootComponent;
|
|
AddItem(Result);
|
|
end;
|
|
|
|
function TSpkItems.AddRadioButton: TSpkRadioButton;
|
|
begin
|
|
Result := TSpkRadioButton.Create(FRootComponent);
|
|
Result.Parent := FRootComponent;
|
|
AddItem(Result);
|
|
end;
|
|
|
|
function TSpkItems.GetItems(AIndex: integer): TSpkBaseItem;
|
|
begin
|
|
Result := TSpkBaseItem(inherited Items[AIndex]);
|
|
end;
|
|
|
|
procedure TSpkItems.Notify(Item: TComponent; Operation: TOperation);
|
|
begin
|
|
inherited Notify(Item, Operation);
|
|
|
|
case Operation of
|
|
opInsert:
|
|
begin
|
|
// Setting the dispatcher to nil will cause that during the ownership
|
|
// assignment, the Notify method will not be called
|
|
TSpkBaseItem(Item).ToolbarDispatch := nil;
|
|
TSpkBaseItem(Item).Appearance := FAppearance;
|
|
TSpkBaseItem(Item).Images := FImages;
|
|
TSpkBaseItem(Item).DisabledImages := FDisabledImages;
|
|
TSpkBaseItem(Item).LargeImages := FLargeImages;
|
|
TSpkBaseItem(Item).DisabledLargeImages := FDisabledLargeImages;
|
|
TSpkBaseItem(Item).ImagesWidth := FImagesWidth;
|
|
TSpkBaseItem(Item).LargeImagesWidth := FLargeImagesWidth;
|
|
TSpkBaseItem(Item).ToolbarDispatch := FToolbarDispatch;
|
|
end;
|
|
|
|
opRemove:
|
|
if not (csDestroying in Item.ComponentState) then
|
|
begin
|
|
TSpkBaseItem(Item).ToolbarDispatch := nil;
|
|
TSpkBaseItem(Item).Appearance := nil;
|
|
TSpkBaseItem(Item).Images := nil;
|
|
TSpkBaseItem(Item).DisabledImages := nil;
|
|
TSpkBaseItem(Item).LargeImages := nil;
|
|
TSpkBaseItem(Item).DisabledLargeImages := nil;
|
|
// TSpkBaseitem(Item).ImagesWidth := 0;
|
|
// TSpkBaseItem(Item).LargeImagesWidth := 0;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkItems.SetAppearance(const Value: TSpkToolbarAppearance);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FAppearance := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].Appearance := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetDisabledImages(const Value: TImageList);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FDisabledImages := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].DisabledImages := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetDisabledLargeImages(const Value: TImageList);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FDisabledLargeImages := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].DisabledLargeImages := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetImages(const Value: TImageList);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FImages := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].Images := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetImagesWidth(const Value: Integer);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FImagesWidth := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].ImagesWidth := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetLargeImages(const Value: TImageList);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FLargeImages := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].LargeImages := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetLargeImagesWidth(const Value: Integer);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
FLargeImagesWidth := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].LargeImagesWidth := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.SetToolbarDispatch(const Value: TSpkBaseToolbarDispatch);
|
|
var
|
|
i : integer;
|
|
begin
|
|
FToolbarDispatch := Value;
|
|
for i := 0 to Count - 1 do
|
|
Items[i].ToolbarDispatch := Value;
|
|
end;
|
|
|
|
procedure TSpkItems.Update;
|
|
begin
|
|
inherited Update;
|
|
if Assigned(FToolbarDispatch) then
|
|
FToolbarDispatch.NotifyItemsChanged;
|
|
end;
|
|
|
|
end.
|