Componentes.Terceros.DevExp.../official/x.19/ExpressBars 5/Demos/Delphi/EBars5Demo/EBars5Main.pas
2007-09-09 11:27:22 +00:00

620 lines
19 KiB
ObjectPascal

unit EBars5Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
dxBar, dxBarExtItems, ComCtrls, ExtCtrls, StdCtrls, Buttons, ImgList,
ActnList, EBarsUtils;
type
TdxItemsDisabling = (idCyclic, idAll, idNone);
TEBars5MainForm = class(TForm)
BarManager: TdxBarManager;
dxBarSubItemFile: TdxBarSubItem;
dxBarSubItemHelp: TdxBarSubItem;
dxBarStaticEditor: TdxBarStatic;
dxBarStaticStatus: TdxBarStatic;
dxBarDockControl1: TdxBarDockControl;
dxBarControlContainerItem: TdxBarControlContainerItem;
ilComponents: TImageList;
dxBarSubItemProducts: TdxBarSubItem;
dxBarSubItemPages: TdxBarSubItem;
dxBarSubItemView: TdxBarSubItem;
Editor: TRichEdit;
pcProducts: TPageControl;
dxBarButtonExit: TdxBarLargeButton;
dxBarButtonNew: TdxBarLargeButton;
dxBarButtonOpen: TdxBarLargeButton;
dxBarButtonSave: TdxBarLargeButton;
dxBarButtonSaveAs: TdxBarLargeButton;
dxBarButtonPrint: TdxBarLargeButton;
dxBarProgressItem: TdxBarProgressItem;
Timer1: TTimer;
dxBarEdit: TdxBarEdit;
iBars5: TImage;
dxBLBDBGridLayoutList: TdxBarLargeButton;
dxBLBTreeList: TdxBarLargeButton;
dxBLBDBTreeList: TdxBarLargeButton;
dxBLBCalculator: TdxBarLargeButton;
dxBLBCalcDisplay: TdxBarLargeButton;
dxBLBSpinImage: TdxBarLargeButton;
dxBLBBarDockControl: TdxBarLargeButton;
dxBLBBarConverter: TdxBarLargeButton;
dxBLBBarManager: TdxBarLargeButton;
dxBLBBarPopupMenu: TdxBarLargeButton;
dxBLBBarDBNavigator: TdxBarLargeButton;
dxBLBSideBarStore: TdxBarLargeButton;
dxBLBSideBar: TdxBarLargeButton;
dxBLBSideBarPopupMenu: TdxBarLargeButton;
dxBLBImageListBox: TdxBarLargeButton;
dxBLBImageComboBox: TdxBarLargeButton;
dxBLBInspector: TdxBarLargeButton;
dxBLBDBInspect: TdxBarLargeButton;
dxBLBMasterView: TdxBarLargeButton;
dxBLBEdit: TdxBarLargeButton;
dxBLBMaskEdit: TdxBarLargeButton;
dxBLBMemo: TdxBarLargeButton;
dxBLBDateEdit: TdxBarLargeButton;
dxBLBButtonEdit: TdxBarLargeButton;
dxBLBCheckEdit: TdxBarLargeButton;
dxBLBImageEdit: TdxBarLargeButton;
dxBLBSpinEdit: TdxBarLargeButton;
dxBLBPickEdit: TdxBarLargeButton;
dxBLBCalcEdit: TdxBarLargeButton;
dxBLBHyperLinkEdit: TdxBarLargeButton;
dxBLBTimeEdit: TdxBarLargeButton;
dxBLBCurrencyEdit: TdxBarLargeButton;
dxBLBGraphicEdit: TdxBarLargeButton;
dxBLBBlobEdit: TdxBarLargeButton;
dxBLBMRUEdit: TdxBarLargeButton;
dxBLBPopupEdit: TdxBarLargeButton;
dxBLBDBEdit: TdxBarLargeButton;
dxBLBDBMaskEdit: TdxBarLargeButton;
dxBLBDBMemo: TdxBarLargeButton;
dxBLBDBDateEdit: TdxBarLargeButton;
dxBLBDBButtonEdit: TdxBarLargeButton;
dxBLBDBCheckEdit: TdxBarLargeButton;
dxBLBDBImageEdit: TdxBarLargeButton;
dxBLBDBSpinEdit: TdxBarLargeButton;
dxBLBDBPickEdit: TdxBarLargeButton;
dxBLBDBCalcEdit: TdxBarLargeButton;
dxBLBDBHyperLinkEdit: TdxBarLargeButton;
dxBLBDBTimeEdit: TdxBarLargeButton;
dxBLBDBCurrencyEdit: TdxBarLargeButton;
dxBLBDBGraphicEdit: TdxBarLargeButton;
dxBLBDBBlobEdit: TdxBarLargeButton;
dxBLBDBMRUEdit: TdxBarLargeButton;
dxBLBDBPopupEdit: TdxBarLargeButton;
dxBLBDBLookupEdit: TdxBarLargeButton;
dxBLBDBExtLookupEdit: TdxBarLargeButton;
dxBLBEditStyleController: TdxBarLargeButton;
dxBLBCheckEditStyleController: TdxBarLargeButton;
dxBLBComponentPrinter: TdxBarLargeButton;
dxBLBTreeView: TdxBarLargeButton;
dxBLBDBTreeView: TdxBarLargeButton;
dxBLBTreeViewEdit: TdxBarLargeButton;
dxBLBDBTreeViewEdit: TdxBarLargeButton;
dxBLBLookupTreeViewEdit: TdxBarLargeButton;
dxBLBDBLookupTreeViewEdit: TdxBarLargeButton;
dxBLBDBTreePrintData: TdxBarLargeButton;
dxBLBOrgChart: TdxBarLargeButton;
dxBLBDBOrgChart: TdxBarLargeButton;
dxBLBFlowChart: TdxBarLargeButton;
dxBLBStatus: TdxBarLargeButton;
dxBLIPages: TdxBarListItem;
Timer2: TTimer;
dxBarListItem1: TdxBarListItem;
dxBarListItem2: TdxBarListItem;
dxBarListItem3: TdxBarListItem;
dxBarListItem4: TdxBarListItem;
dxBarListItem5: TdxBarListItem;
dxBarInPlaceSubItem1: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem2: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem3: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem4: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem5: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem6: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem9: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem10: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem11: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem7: TdxBarInPlaceSubItem;
dxBarInPlaceSubItem8: TdxBarInPlaceSubItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
PrintDialog: TPrintDialog;
dxBLBDBGrid: TdxBarLargeButton;
dxBarButton1: TdxBarLargeButton;
dxBarButton6: TdxBarLargeButton;
dxBarButton2: TdxBarLargeButton;
dxBarButton3: TdxBarLargeButton;
dxBarButton5: TdxBarLargeButton;
dxBarButton7: TdxBarLargeButton;
dxBarButton8: TdxBarLargeButton;
BarSubItemHelp: TdxBarSubItem;
ilHotImages: TImageList;
ilDisabledImages: TImageList;
Panel1: TPanel;
BarManagerStyle: TRadioGroup;
gbImages: TGroupBox;
cbHotImages: TCheckBox;
cbDisabledImages: TCheckBox;
CheckBox4: TCheckBox;
Timer3: TTimer;
rgItemsDisabling: TRadioGroup;
cbShowCaptions: TCheckBox;
Panel2: TPanel;
dxBarStatic1: TdxBarStatic;
dxBarStatic2: TdxBarStatic;
dxBarStatic3: TdxBarStatic;
dxBarLargeButton1: TdxBarLargeButton;
dxBarLargeButton2: TdxBarLargeButton;
procedure dxBarSubItemFilePaintBar(Sender: TObject; Canvas: TCanvas;
const R: TRect);
procedure FormCreate(Sender: TObject);
procedure pcProductsChange(Sender: TObject);
procedure dxBarButtonExitClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure EditorSelectionChange(Sender: TObject);
procedure dxBLBDBGridClick(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure dxBLBStatusClick(Sender: TObject);
procedure dxBLIPagesClick(Sender: TObject);
procedure dxBarSubItemProductsDetaching(Sender: TObject);
procedure dxBarButtonNewClick(Sender: TObject);
procedure dxBarButtonPrintClick(Sender: TObject);
procedure dxBarButtonOpenClick(Sender: TObject);
procedure dxBarButtonSaveClick(Sender: TObject);
procedure dxBarButtonSaveAsClick(Sender: TObject);
procedure BarManagerStyleClick(Sender: TObject);
procedure actRateDemoExecute(Sender: TObject);
procedure actAboutExecute(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure cbHotImagesClick(Sender: TObject);
procedure cbDisabledImagesClick(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure rgItemsDisablingClick(Sender: TObject);
procedure cbShowCaptionsClick(Sender: TObject);
private
Delta: Integer;
DetachingBar: TdxBar;
FFileName: string;
FPageIndex, FDisabledItemIndex: Integer;
FItemList: TList;
FItemsDisabling: TdxItemsDisabling;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure SaveFile(ASaveAs: Boolean);
end;
TdxBarManagerWrapper = class(TdxBarManager);
var
EBars5MainForm: TEBars5MainForm;
StatusImIndex: Integer;
implementation
uses
ShellAPI, EBars5About, EBarsDemoRating;
{$R *.DFM}
{$R windowsxp.res}
procedure TEBars5MainForm.dxBarSubItemFilePaintBar(Sender: TObject; Canvas: TCanvas;
const R: TRect);
var
SR, BR: TRect;
begin
DrawVerticalGradient(Canvas, R, 0, 0, 0, 0, 0, 255);
SR := R;
with iBars5.Picture.Bitmap do
begin
TransparentColor := clBlack;
BR := Rect(0, 0, Width, Height);
end;
with SR do
begin
Left := (Left + Right - BR.Right) div 2;
Right := Left + BR.Right;
Top := Bottom - BR.Bottom;
end;
if SR.Top > 0 then
with Canvas do
begin
Brush.Style := bsClear;
BrushCopy(SR, iBars5.Picture.Bitmap, BR, clBlack);
Brush.Style := bsSolid;
end;
end;
procedure TEBars5MainForm.FormCreate(Sender: TObject);
procedure FillPageList;
var
ItemList: TList;
I: Integer;
begin
dxBLIPages.Items.Clear;
ItemList := TList.Create;
BarManager.GetItemsByCategory(BarManager.Categories.IndexOf('Pages'), ItemList);
for I := 0 to ItemList.Count - 1 do
with TdxBarListItem(ItemList.Items[I]) do
begin
dxBLIPages.Items.AddStrings(Items);
dxBLIPages.Items.Add('-');
end;
ItemList.Free;
BarManagerStyleClick(nil);
end;
procedure FillPageControl;
function AddPage(ACaption: string): TTabSheet;
begin
Result := TTabSheet.Create(pcProducts);
with Result do
begin
Parent := pcProducts;
PageControl := pcProducts;
Caption := ACaption;
Brush.Color := TdxBarmanagerWrapper(BarManager).FlatToolbarsColor;
end;
end;
function CreateDockControl(APage: TTabSheet): TdxBarDockControl;
begin
Result := TdxBarDockControl.Create(APage);
with Result do
begin
Parent := APage;
BarManager := Self.BarManager;
Align := dalTop;
AllowDocking := False;
end;
end;
function CreateToolBar(ADockControl: TdxBarDockControl): TdxBar;
begin
Result := BarManager.Bars.Add;
with Result do
begin
Caption := TTabSheet(ADockControl.Parent).Caption + ' Components';
DockControl := ADockControl;
Visible := True;
Hidden := True;
WholeRow := True;
NotDocking := [dsNone..dsBottom];
BorderStyle := bbsNone;
end;
end;
var
I: Integer;
Page: TTabSheet;
DockCtrl: TdxBarDockControl;
ToolBar: TdxBar;
begin
BarManager.GetItemsByCategory(BarManager.Categories.IndexOf('Products'), FItemList);
for I := 0 to FItemList.Count - 1 do
begin
Page := AddPage(TdxBarItem(FItemList.Items[I]).Caption);
DockCtrl := CreateDockControl(Page);
ToolBar := CreateToolBar(DockCtrl);
ToolBar.LockUpdate := True;
ToolBar.ItemLinks.Assign(TdxBarInPlaceSubItem(FItemList.Items[I]).ItemLinks);
ToolBar.LockUpdate := False;
end;
end;
var
Path: string;
begin
FItemsDisabling := idCyclic;
FItemList := TList.Create;
FillPageList;
FillPageControl;
pcProducts.Brush.Color := TdxBarManagerWrapper(BarManager).FlatToolbarsColor;
Path := ExtractFileDir(Application.ExeName);
try
FFileName := Path +'\What''s New.rtf';
Editor.Lines.LoadFromFile(FFileName);
dxBarStaticStatus.Caption := 'Loaded';
finally
end;
Timer1.Enabled := True;
Timer2.Enabled := True;
StatusImIndex := -1;
DetachingBar := nil;
pcProductsChange(pcProducts);
dmCommonData.AboutFormClass := TEBars5AboutForm;
end;
procedure TEBars5MainForm.FormDestroy(Sender: TObject);
begin
FItemList.Free;
end;
procedure TEBars5MainForm.pcProductsChange(Sender: TObject);
var
I: Integer;
CurPage: string;
AEnabled: Boolean;
begin
FPageIndex := TPageControl(Sender).ActivePage.PageIndex;
FDisabledItemIndex := 0;
CurPage := TPageControl(Sender).ActivePage.Caption;
dxBLIPages.ItemIndex := dxBLIPages.Items.IndexOf(CurPage);
with BarManager.Bars[3].ItemLinks do
for I := 0 to Count - 1 do
with TdxBarListItem(Items[I].Item) do
ItemIndex := Items.IndexOf(CurPage);
if not (FItemsDisabling = idCyclic) then
begin
AEnabled := FItemsDisabling = idNone;
for i:=0 to TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks.Count - 1 do
TdxBarLargeButton(TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks[i].Item).Enabled := AEnabled;
end;
end;
procedure TEBars5MainForm.Timer3Timer(Sender: TObject);
var
AItemToEnable: Integer;
begin
if FDisabledItemindex = 0 then
AItemToEnable := TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks.Count - 1
else
AItemToEnable := FDisabledItemindex - 1;
TdxBarLargeButton(TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks[AItemToEnable].Item).Enabled := True;
TdxBarLargeButton(TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks[FDisabledItemindex].Item).Enabled := False;
if FDisabledItemindex + 1 > (TdxBarInPlaceSubItem(FItemList.Items[FPageIndex]).ItemLinks.Count - 1) then
FDisabledItemindex := 0
else
Inc(FDisabledItemindex);
end;
procedure TEBars5MainForm.dxBarButtonExitClick(Sender: TObject);
begin
Close;
end;
procedure TEBars5MainForm.Timer1Timer(Sender: TObject);
begin
if dxBarProgressItem.Position = 255 then
Delta := -1;
if dxBarProgressItem.Position = 0 then
Delta := 1;
dxBarProgressItem.StepBy(Delta);
BarManager.Bars[4].AlphaBlendValue := dxBarProgressItem.Position;
end;
procedure TEBars5MainForm.EditorSelectionChange(Sender: TObject);
var
EditorRow, EditorCol: Integer;
begin
EditorRow := SendMessage(Editor.Handle, EM_LINEFROMCHAR, Editor.SelStart, 0);
EditorCol := Editor.Selstart - SendMessage(Editor.Handle, EM_LINEINDEX, EditorRow, 0);
dxBarStaticEditor.Caption := Format('Line: %3d Col: %3d', [1 + EditorRow, 1 + EditorCol]);
end;
procedure TEBars5MainForm.CMSysColorChange(var Message: TMessage);
var
ToolbarsColor: TColor;
I: Integer;
begin
inherited;
ToolbarsColor := TdxBarmanagerWrapper(BarManager).FlatToolbarsColor;
pcProducts.Brush.Color := ToolbarsColor;
if pcProducts.HandleAllocated then
SendMessage(pcProducts.Handle, WM_SYSCOLORCHANGE, 0, 0);
for I := 0 to pcProducts.PageCount - 1 do
pcProducts.Pages[I].Brush.Color := ToolbarsColor;
if pcProducts.ActivePage.HandleAllocated then
SendMessage(pcProducts.ActivePage.Handle, WM_SYSCOLORCHANGE, 0, 0);
end;
procedure TEBars5MainForm.dxBLBDBGridClick(Sender: TObject);
begin
StatusImIndex := TdxBarLargeButton(Sender).LargeImageIndex;
dxBLBStatus.LargeImageIndex := StatusImIndex;
dxBLBStatus.Caption := TdxBarLargeButton(Sender).Caption;
end;
procedure TEBars5MainForm.Timer2Timer(Sender: TObject);
begin
with dxBLBStatus do
if LargeImageIndex = -1 then
LargeImageIndex := StatusImIndex
else
LargeImageIndex := -1;
end;
procedure TEBars5MainForm.dxBLBStatusClick(Sender: TObject);
begin
if dxBLBStatus.Caption <> 'Not Selected' then
MessageBox(Handle,PChar('You have selected the ' + dxBLBStatus.Caption + ' !'),
'Status bar button',MB_OK or MB_ICONINFORMATION);
end;
procedure TEBars5MainForm.dxBLIPagesClick(Sender: TObject);
function FindPageByCaption(ACaption: string): TTabSheet;
var
I: Integer;
begin
Result := nil;
with pcProducts do
for I := 0 to PageCount - 1 do
if Pages[I].Caption = ACaption then
begin
Result := Pages[I];
break;
end;
end;
begin
with TdxBarListItem(Sender) do
pcProducts.ActivePage := FindPageByCaption(Items[ItemIndex]);
pcProductsChange(pcProducts);
end;
procedure TEBars5MainForm.dxBarSubItemProductsDetaching(Sender: TObject);
var
I: Integer;
begin
if DetachingBar = nil then
begin
DetachingBar := BarManager.Bars.Add;
with DetachingBar do
begin
Caption := 'Products';
AllowCustomizing := False;
Hidden := True;
MultiLine := True;
dxBarSubItemProducts.DetachingBar := Index;
for I := 0 to dxBarSubItemProducts.ItemLinks.Count - 1 do
if dxBarSubItemProducts.ItemLinks.Items[I].Item.ClassName = 'TdxBarInPlaceSubItem' then
ItemLinks.Add.Assign(dxBarSubItemProducts.ItemLinks.Items[I]);
end;
end;
end;
procedure TEBars5MainForm.dxBarButtonNewClick(Sender: TObject);
begin
Editor.Clear;
dxBarStaticStatus.Caption := '';
FFileName := '';
end;
procedure TEBars5MainForm.dxBarButtonPrintClick(Sender: TObject);
begin
if PrintDialog.Execute then Editor.Print(FFileName);
end;
procedure TEBars5MainForm.dxBarButtonOpenClick(Sender: TObject);
begin
OpenDialog.FileName := '';
if OpenDialog.Execute then
begin
FFileName := OpenDialog.FileName;
Editor.PlainText := (OpenDialog.FilterIndex = 2);
Editor.Lines.LoadFromFile(FFileName);
dxBarStaticStatus.Caption := 'Loaded';
end;
end;
procedure TEBars5MainForm.SaveFile(ASaveAs: Boolean);
begin
if ASaveAs or (FFileName = '') then
begin
SaveDialog.FileName := FFileName;
if not SaveDialog.Execute then Exit;
Editor.PlainText := (SaveDialog.FilterIndex = 2);
FFileName := SaveDialog.FileName;
end;
Editor.Lines.SaveToFile(FFileName);
end;
procedure TEBars5MainForm.dxBarButtonSaveClick(Sender: TObject);
begin
SaveFile(False);
end;
procedure TEBars5MainForm.dxBarButtonSaveAsClick(Sender: TObject);
begin
SaveFile(True);
end;
procedure TEBars5MainForm.BarManagerStyleClick(Sender: TObject);
begin
BarManager.Style := TdxBarManagerStyle(BarManagerStyle.ItemIndex);
end;
procedure TEBars5MainForm.actRateDemoExecute(Sender: TObject);
begin
with TEBarsDemoRatingForm.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;
procedure TEBars5MainForm.actAboutExecute(Sender: TObject);
begin
with TEBars5AboutForm.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
procedure TEBars5MainForm.FormResize(Sender: TObject);
begin
Editor.Invalidate;
end;
procedure TEBars5MainForm.cbHotImagesClick(Sender: TObject);
begin
if TCheckBox(Sender).Checked then
BarManager.HotImages := ilHotImages
else
BarManager.HotImages := nil;
end;
procedure TEBars5MainForm.cbDisabledImagesClick(Sender: TObject);
begin
if TCheckBox(Sender).Checked then
BarManager.DisabledImages := ilDisabledImages
else
BarManager.DisabledImages := nil;
end;
procedure TEBars5MainForm.CheckBox4Click(Sender: TObject);
begin
if TCheckBox(Sender).Checked then
BarManager.LargeImages := ilComponents
else
BarManager.LargeImages := nil;
end;
procedure TEBars5MainForm.rgItemsDisablingClick(Sender: TObject);
begin
case TRadioGroup(Sender).ItemIndex of
0: begin
FItemsDisabling := idCyclic;
Timer3.Enabled := True;
end;
1: begin
FItemsDisabling := idAll;
Timer3.Enabled := False;
end;
2: begin
FItemsDisabling := idNone;
Timer3.Enabled := False;
end;
end;
pcProductsChange(pcProducts);
end;
procedure TEBars5MainForm.cbShowCaptionsClick(Sender: TObject);
var
i: Integer;
AChecked: Boolean;
begin
BarManager.LockUpdate := True;
try
AChecked := TCheckBox(Sender).Checked;
for i:=0 to ComponentCount - 1 do
if Components[i] is TdxBarLargeButton then
TdxBarLargeButton(Components[i]).ShowCaption := AChecked;
if Achecked then
pcProducts.Height := 70
else
pcProducts.Height := 58;
finally
BarManager.LockUpdate := False;
end;
end;
end.