//--------------------------------------------------------------------------- #include #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 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(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(); } //---------------------------------------------------------------------------