Files
lazarus-ccr/components/spktoolbar/SpkToolbar/spkt_Items.pas

196 lines
6.0 KiB
ObjectPascal
Raw Normal View History

unit spkt_Items;
{$mode delphi}
{.$Define EnhancedRecordSupport}
(*******************************************************************************
* *
* Plik: spkt_Items.pas *
* Opis: Modu³ zawiera klasê kolekcji elementów tafli. *
* Copyright: (c) 2009 by Spook. Jakiekolwiek u¿ycie komponentu bez *
* uprzedniego uzyskania licencji od autora stanowi z³amanie *
* prawa autorskiego! *
* *
*******************************************************************************)
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;
// *** Gettery i settery ***
procedure SetToolbarDispatch(const Value: TSpkBaseToolbarDispatch);
function GetItems(index: 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);
public
function AddLargeButton : TSpkLargeButton;
function AddSmallButton : TSpkSmallButton;
function AddCheckbox: TSpkCheckbox;
function AddRadioButton: TSpkRadioButton;
// *** Reakcja na zmiany listy ***
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;
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(index: integer): TSpkBaseItem;
begin
result:=TSpkBaseItem(inherited Items[index]);
end;
procedure TSpkItems.Notify(Item: TComponent;
Operation : TOperation);
begin
inherited Notify(Item, Operation);
case Operation of
opInsert: begin
// Ustawienie dyspozytora na nil spowoduje, ¿e podczas
// przypisywania w³asnoœci nie bêd¹ wo³ane metody Notify*
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).ToolbarDispatch:=FToolbarDispatch;
end;
opRemove: begin
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;
end;
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.SetLargeImages(const Value: TImageList);
var i: Integer;
begin
FLargeImages := Value;
for i := 0 to Count - 1 do
Items[i].LargeImages := 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.