Files
lazarus-ccr/components/jvcllaz/examples/JvXPBar/MainFrm.pas

196 lines
5.1 KiB
ObjectPascal

unit MainFrm;
{$MODE DELPHI}
interface
uses
SysUtils, Classes, Graphics, Controls, Forms, StdCtrls, ComCtrls, ExtCtrls,
Dialogs, ImgList, ActnList,
JvXPCore, JvXPBar, JvXPContainer, JvExControls, JvComponent, JvXPCheckCtrls,
JvXPButtons;
resourcestring
SClickEvent =
' You clicked on the action "%s"...';
type
TProcControl = procedure (Control:TControl) of object;
TfrmMain = class(TForm)
acConnectAdministrator: TAction;
acConnectLocalServer: TAction;
acConnectRemoteServer: TAction;
aclWinXPBar: TActionList;
acSettingsDatabase: TAction;
acSettingsDownloads: TAction;
acSettingsStatistics: TAction;
acSettingsUsers: TAction;
acSynchronizeUnknown: TAction;
acSynchronizeWeb: TAction;
btnCollapseAll: TJvXPButton;
btnExpandAll: TJvXPButton;
cntDetails: TJvXPContainer;
cntWinXPBar: TJvXPContainer;
imlWinXPBar: TImageList;
lbWelcome: TLabel;
sbxWinXPBar: TScrollBox;
spltMain: TSplitter;
btnToogleEnableMode: TJvXPButton;
btnToggleVisibleMode: TJvXPButton;
ilOldButtons: TImageList;
chkGrouped: TJvXPCheckbox;
ilWhiteButtons: TImageList;
ilRedButtons: TImageList;
ilBlackButtons: TImageList;
acGettingStarted: TAction;
acHelp: TAction;
acHowDoI: TAction;
acCommonQuestions: TAction;
JvXPContainer1: TJvXPContainer;
dxWinXPBar4: TJvXPBar;
JvXPBar1: TJvXPBar;
dxWinXPBar3: TJvXPBar;
dxWinXPBar2: TJvXPBar;
dxWinXPBar1: TJvXPBar;
tvSelfView: TTreeView;
StatusBar1: TStatusBar;
ilMSN: TImageList;
ilMSN2: TImageList;
ilFB: TImageList;
procedure acConnectRemoteServerExecute(Sender: TObject);
procedure btnCollapseAllClick(Sender: TObject);
procedure btnExpandAllClick(Sender: TObject);
procedure btnToogleEnableModeClick(Sender: TObject);
procedure btnToggleVisibleModeClick(Sender: TObject);
procedure chkGroupedClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure DoGrouped(Control:TControl);
procedure DoExpandAll(Control:TControl);
procedure DoCollapseAll(Control:TControl);
procedure DoEnableToggle(Control:TControl);
procedure DoVisibleToggle(Control:TControl);
procedure IterateControls(Proc:TProcControl);
procedure BuildStructure;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.lfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
cntDetails.Align := alClient;
BuildStructure;
end;
procedure TfrmMain.acConnectRemoteServerExecute(Sender: TObject);
begin
if Sender is TAction then
StatusBar1.Panels[0].Text := Format(SClickEvent, [TAction(Sender).Caption]);
if Sender is TJvXPBarItem then
StatusBar1.Panels[0].Text := Format(SClickEvent, [TJvXPBarItem(Sender).Caption]);
end;
procedure TfrmMain.btnCollapseAllClick(Sender: TObject);
begin
IterateControls(DoCollapseAll);
end;
procedure TfrmMain.btnExpandAllClick(Sender: TObject);
begin
IterateControls(DoExpandAll);
end;
procedure TfrmMain.btnToogleEnableModeClick(Sender: TObject);
begin
IterateControls(DoEnableToggle);
end;
procedure TfrmMain.btnToggleVisibleModeClick(Sender: TObject);
begin
IterateControls(DoVisibleToggle);
end;
procedure TfrmMain.chkGroupedClick(Sender: TObject);
begin
IterateControls(DoGrouped);
btnExpandAll.Enabled := not chkGrouped.Checked;
end;
procedure TfrmMain.DoGrouped(Control: TControl);
begin
if Control is TJvXPBar then
TJvXPBar(Control).Grouped := chkGrouped.Checked;
end;
procedure TfrmMain.DoExpandAll(Control: TControl);
begin
if Control is TJvXPBar then
TJvXPBar(COntrol).Collapsed := false;
end;
procedure TfrmMain.IterateControls(Proc: TProcControl);
var i:integer;
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TControl then
Proc(TControl(Components[i]));
end;
procedure TfrmMain.DoCollapseAll(Control: TControl);
begin
if Control is TJvXPBar then
TJvXPBar(COntrol).Collapsed := true;
end;
procedure TfrmMain.DoEnableToggle(Control: TControl);
var i:integer;
begin
if Control is TJvXPBar then
for i := 0 to TJvXPBar(Control).Items.Count - 1 do
if Odd(i) then
TJvXPBar(Control).Items[i].Enabled := not TJvXPBar(Control).Items[i].Enabled;
end;
procedure TfrmMain.DoVisibleToggle(Control: TControl);
var i:integer;
begin
if Control is TJvXPBar then
for i := 0 to TJvXPBar(Control).Items.Count - 1 do
if Odd(i) then
TJvXPBar(Control).Items[i].Visible := not TJvXPBar(Control).Items[i].Visible;
end;
procedure TfrmMain.BuildStructure;
var
i,j:integer;
Parent, Child:TTreeNode;
ABar:TJvXPBar;
begin
tvSelfView.Items.Clear;
for i := ComponentCount - 1 downto 0 do
if Components[i] is TJvXPBar then
begin
ABar := TJvXPBar(Components[i]);
Parent := tvSelfView.Items.AddChild(nil,ABar.Caption);
if ABar.ControlCount = 0 then
for j := 0 to ABar.Items.Count - 1 do
begin
Child := tvSelfView.Items.AddChild(Parent,ABar.Items[j].Caption);
Child.ImageIndex := ABar.Items[j].ImageIndex;
Child.SelectedIndex := Child.ImageIndex;
end;
end;
tvSelfView.FullExpand;
end;
end.