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

428 lines
15 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "EBars5Main.h"
#include "EBarsDemoRating.h"
#include "EBars5About.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "dxBar"
#pragma link "dxBarExtItems"
#pragma resource "*.dfm"
#include <shellapi.h>
TEBars5MainForm *EBars5MainForm;
//---------------------------------------------------------------------------
__fastcall TEBars5MainForm::TEBars5MainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::FillPageList(void)
{
int I;
dxBLIPages->Items->Clear();
TList *ItemList = new TList;
BarManager->GetItemsByCategory(BarManager->Categories->IndexOf("Pages"), ItemList);
for (I = 0; I < ItemList->Count; I++)
{
dxBLIPages->Items->AddStrings(((TdxBarListItem*)(ItemList->Items[I]))->Items);
dxBLIPages->Items->Add('-');
}
ItemList->Free();
BarManagerStyleClick(NULL);
}
TTabSheet* __fastcall TEBars5MainForm::AddPage(String ACaption)
{
TTabSheet *Result = new TTabSheet(pcProducts);
Result->Parent = pcProducts;
Result->PageControl = pcProducts;
Result->Caption = ACaption;
Result->Brush->Color = (TColor)((TdxBarManagerWrapper *)BarManager)->FlatToolbarsColorWrapper;
return Result;
}
//---------------------------------------------------------------------------
TdxBarDockControl* __fastcall TEBars5MainForm::CreateDockControl(TTabSheet *APage)
{
TdxBarDockControl *Result = new TdxBarDockControl(APage);
Result->Parent = APage;
Result->BarManager = BarManager;
Result->Align = dalTop;
Result->AllowDocking = false;
return Result;
}
//---------------------------------------------------------------------------
TdxBar* __fastcall TEBars5MainForm::CreateToolBar(TdxBarDockControl *ADockControl)
{
TdxBar *Result = BarManager->Bars->Add();
Result->Caption = ((TTabSheet *)(ADockControl->Parent))->Caption + " Components";
Result->DockControl = ADockControl;
Result->Visible = true;
Result->Hidden = true;
Result->WholeRow = true;
Result->NotDocking = Result->NotDocking << dsNone << dsTop << dsLeft << dsRight << dsBottom;
Result->BorderStyle = bbsNone;
return Result;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::FillPageControl(void)
{
int I;
TTabSheet *Page;
TdxBarDockControl *DockCtrl;
TdxBar *ToolBar;
BarManager->GetItemsByCategory(BarManager->Categories->IndexOf("Products"), FItemList);
for (I = 0; I < FItemList->Count; I++)
{
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;
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::FormCreate(TObject *Sender)
{
FItemList = new TList();
FItemsDisabling = idCyclic;
String Path;
dmCommonData->AboutFormClass = __classid(TEBars5AboutForm);
FillPageList();
FillPageControl();
pcProducts->Brush->Color = (TColor)((TdxBarManagerWrapper *)BarManager)->FlatToolbarsColorWrapper;
Path = ExtractFileDir(Application->ExeName);
try
{
FFileName = Path + "\\What's New.rtf";
Editor->Lines->LoadFromFile(FFileName);
dxBarStaticStatus->Caption = "Loaded";
}
catch(...)
{};
Timer1->Enabled = true;
Timer2->Enabled = true;
StatusImIndex = -1;
DetachingBar = 0;
pcProductsChange(pcProducts);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::EditorSelectionChange(TObject *Sender)
{
Integer EditorRow, EditorCol;
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", ARRAYOFCONST((1 + EditorRow, 1 + EditorCol)));
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::Timer1Timer(TObject *Sender)
{
if (dxBarProgressItem->Position == 255) Delta = -1;
if (dxBarProgressItem->Position == 0) Delta = 1;
dxBarProgressItem->StepBy(Delta);
BarManager->Bars->Items[4]->AlphaBlendValue = (byte)dxBarProgressItem->Position;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::pcProductsChange(TObject *Sender)
{
TdxBarListItem *BarItem;
FPageIndex = ((TPageControl*)Sender)->ActivePage->PageIndex;
FDisabledItemIndex = 0;
String CurPage = ((TPageControl *)Sender)->ActivePage->Caption;
dxBLIPages->ItemIndex = dxBLIPages->Items->IndexOf(CurPage);
for (int I = 0; I < BarManager->Bars->Items[3]->ItemLinks->Count; I++)
{
BarItem = (TdxBarListItem *)BarManager->Bars->Items[3]->ItemLinks->Items[I]->Item;
BarItem->ItemIndex = BarItem->Items->IndexOf(CurPage);
}
if (!(FItemsDisabling == idCyclic)) {
bool AEnabled = FItemsDisabling == idNone;
for (int i=0; i < ((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Count; i++)
((TdxBarLargeButton*)((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Items[i]->Item)->Enabled = AEnabled;
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarSubItemFilePaintBar(TObject *Sender,
TCanvas *Canvas, const TRect &R)
{
TRect SR, BR;
DrawVerticalGradient(Canvas, R, 0, 0, 0, 0, 0, 255);
SR = R;
iBars5->Picture->Bitmap->TransparentColor = clBlack;
BR = Rect(0, 0, iBars5->Picture->Bitmap->Width, iBars5->Picture->Bitmap->Height);
SR.Left = (SR.Left + SR.Right - BR.Right)/2;
SR.Right = SR.Left + BR.Right;
SR.Top = SR.Bottom - BR.Bottom;
if (SR.Top > 0)
{
Canvas->Brush->Style = bsClear;
Canvas->BrushCopy(SR, iBars5->Picture->Bitmap, BR, clBlack);
Canvas->Brush->Style = bsSolid;
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::CMSysColorChange(Messages::TMessage &Message)
{
int I;
TColor ToolbarsColor;
TForm::Dispatch(&Message);
ToolbarsColor = (TColor)((TdxBarManagerWrapper *)BarManager)->FlatToolbarsColorWrapper;
pcProducts->Brush->Color = ToolbarsColor;
if (pcProducts->HandleAllocated())
SendMessage(pcProducts->Handle, WM_SYSCOLORCHANGE, 0, 0);
for (I = 0; I < pcProducts->PageCount; I++)
pcProducts->Pages[I]->Brush->Color = ToolbarsColor;
if (pcProducts->ActivePage->HandleAllocated())
SendMessage(pcProducts->ActivePage->Handle, WM_SYSCOLORCHANGE, 0, 0);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonOnWebClick(TObject *Sender)
{
ShellExecute(0, NULL, "http://www.devexpress.com", NULL, NULL, SW_RESTORE);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBLBDBGridClick(TObject *Sender)
{
StatusImIndex = ((TdxBarLargeButton *)Sender)->LargeImageIndex;
dxBLBStatus->LargeImageIndex = StatusImIndex;
dxBLBStatus->Caption = ((TdxBarLargeButton *)Sender)->Caption;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::Timer2Timer(TObject* Sender)
{
if (dxBLBStatus->LargeImageIndex == -1)
dxBLBStatus->LargeImageIndex = StatusImIndex;
else
dxBLBStatus->LargeImageIndex = -1;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBLBStatusClick(TObject* Sender)
{
String Text;
Text = "You have selected the " + dxBLBStatus->Caption + " !";
if (dxBLBStatus->Caption != "Not Selected")
MessageBox(Handle, Text.c_str(), "Status bar button", MB_OK | MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
TTabSheet* TEBars5MainForm::FindPageByCaption(String ACaption)
{
int I;
TTabSheet *Result = 0;
for (I = 0; I < pcProducts->PageCount; I++)
if (pcProducts->Pages[I]->Caption == ACaption)
Result = pcProducts->Pages[I];
return Result;
}
void __fastcall TEBars5MainForm::dxBLIPagesClick(TObject* Sender)
{
pcProducts->ActivePage = FindPageByCaption(((TdxBarListItem *)Sender)->Items->Strings[((TdxBarListItem *)Sender)->ItemIndex]);
pcProductsChange(pcProducts);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarSubItemProductsDetaching(TObject* Sender)
{
int I;
if (DetachingBar == 0)
{
DetachingBar = BarManager->Bars->Add();
DetachingBar->Caption = "Products";
DetachingBar->AllowCustomizing = false;
DetachingBar->Hidden = true;
DetachingBar->MultiLine = true;
dxBarSubItemProducts->DetachingBar = DetachingBar->Index;
for (I = 0; I < dxBarSubItemProducts->ItemLinks->Count; I++)
if ( (String)(dxBarSubItemProducts->ItemLinks->Items[I]->Item->ClassName()) == "TdxBarInPlaceSubItem")
DetachingBar->ItemLinks->Add()->Assign(dxBarSubItemProducts->ItemLinks->Items[I]);
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonNewClick(TObject* Sender)
{
Editor->Clear();
dxBarStaticStatus->Caption = "";
FFileName = "";
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonPrintClick(TObject* Sender)
{
if (PrintDialog->Execute())
Editor->Print(FFileName);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonOpenClick(TObject* Sender)
{
OpenDialog->FileName = "";
if (OpenDialog->Execute())
{
FFileName = OpenDialog->FileName;
Editor->PlainText = (OpenDialog->FilterIndex == 2);
Editor->Lines->LoadFromFile(FFileName);
dxBarStaticStatus->Caption = "Loaded";
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::SaveFile(bool ASaveAs)
{
if (ASaveAs || (FFileName == ""))
{
SaveDialog->FileName = FFileName;
if (!SaveDialog->Execute()) return;
Editor->PlainText = (SaveDialog->FilterIndex == 2);
FFileName = SaveDialog->FileName;
}
Editor->Lines->SaveToFile(FFileName);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonSaveClick(TObject* Sender)
{
SaveFile(false);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::dxBarButtonSaveAsClick(TObject* Sender)
{
SaveFile(true);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::CheckBox4Click(TObject *Sender)
{
if (((TCheckBox*)Sender)->Checked)
BarManager->LargeImages = ilComponents;
else
BarManager->LargeImages = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::cbHotImagesClick(TObject *Sender)
{
if (((TCheckBox*)Sender)->Checked)
BarManager->HotImages = ilHotImages;
else
BarManager->HotImages = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::Timer3Timer(TObject *Sender)
{
int AItemToEnable;
if (FDisabledItemIndex == 0)
AItemToEnable = ((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Count - 1;
else
AItemToEnable = FDisabledItemIndex - 1;
((TdxBarLargeButton*) ((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Items[AItemToEnable]->Item)->Enabled = true;
((TdxBarLargeButton*)((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Items[FDisabledItemIndex]->Item)->Enabled = false;
if (FDisabledItemIndex + 1 > (((TdxBarInPlaceSubItem*)FItemList->Items[FPageIndex])->ItemLinks->Count - 1))
FDisabledItemIndex = 0;
else
FDisabledItemIndex++;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::rgItemsDisablingClick(TObject *Sender)
{
switch (((TRadioGroup*)Sender)->ItemIndex) {
case 0: {
FItemsDisabling = idCyclic;
Timer3->Enabled = True;
}; break;
case 1: {
FItemsDisabling = idAll;
Timer3->Enabled = False;
}; break;
case 2: {
FItemsDisabling = idNone;
Timer3->Enabled = False;
}; break;
}
pcProductsChange(pcProducts);
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::FormDestroy(TObject *Sender)
{
delete FItemList;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::cbShowCaptionsClick(TObject *Sender)
{
BarManager->LockUpdate = true;
try {
bool AChecked = ((TCheckBox*)Sender)->Checked;
for (int i=0; i < ComponentCount; i++)
if (dynamic_cast<TdxBarLargeButton*>(Components[i]))
((TdxBarLargeButton*)Components[i])->ShowCaption = AChecked;
if (AChecked)
pcProducts->Height = 70;
else
pcProducts->Height = 58;
}
__finally {
BarManager->LockUpdate = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::cbDisabledImagesClick(TObject *Sender)
{
if (((TCheckBox*)Sender)->Checked)
BarManager->DisabledImages = ilDisabledImages;
else
BarManager->DisabledImages = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::BarManagerStyleClick(TObject *Sender)
{
BarManager->Style = (TdxBarManagerStyle)BarManagerStyle->ItemIndex;
}
//---------------------------------------------------------------------------
void __fastcall TEBars5MainForm::FormResize(TObject *Sender)
{
Editor->Invalidate();
}
//---------------------------------------------------------------------------