📄 dockingmegademomain.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "DockingMegaDemoMain.h"
#include "DockingMegaDemoAbout.h"
#include "EBarsDemoRating.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "dxBar"
#pragma link "dxDockControl"
#pragma link "dxDockPanel"
#pragma link "dxBarExtItems"
#pragma link "dxsbar"
#pragma resource "*.dfm"
TDockingMegaDemoMainForm *DockingMegaDemoMainForm;
//---------------------------------------------------------------------------
__fastcall TDockingMegaDemoMainForm::TDockingMegaDemoMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::FormShow(TObject *Sender)
{
DockControl = dsHost;
UpdateSolutionTV();
UpdateClassViewTV();
ComboBox1->Align = alClient;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::CheckSite(TdxCustomDockControl* AControl, TTreeNode* ANode)
{
String ANodeName;
if (AControl->Name != "")
ANodeName = AControl->Name;
else ANodeName = AControl->ClassName();
TTreeNode* AChild = tvSolutionExplorer->Items->AddChildObject(ANode, ANodeName, AControl);
AChild->StateIndex = AControl->ImageIndex;
for (int i=0; i < AControl->ChildCount; i++)
CheckSite(AControl->Children[i], AChild);
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::UpdateSolutionTV()
{
if (!tvSolutionExplorer->HandleAllocated()) return;
tvSolutionExplorer->Items->BeginUpdate();
try {
tvSolutionExplorer->Items->Clear();
CheckSite(dsHost, NULL);
tvSolutionExplorer->FullExpand();
}
__finally {
tvSolutionExplorer->Items->EndUpdate();
}
tvSolutionExplorer->Selected = NULL;
for (int i=0; i < tvSolutionExplorer->Items->Count; i++)
if (((TdxCustomDockControl*)tvSolutionExplorer->Items->Item[i]->Data) == DockControl)
tvSolutionExplorer->Selected = tvSolutionExplorer->Items->Item[i];
UpdateProperties();
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::UpdateClassViewTV()
{
if (!tvClassView->HandleAllocated()) return;
TTreeNode* ANode;
tvClassView->Items->BeginUpdate();
try {
tvClassView->Items->Clear();
ANode = tvClassView->Items->AddChild(NULL, "TdxCustomDockControl");
ANode = tvClassView->Items->AddChild(ANode, "TdxCustomDockSite");
tvClassView->Items->AddChild(ANode, "TdxLayoutDockSite");
ANode = tvClassView->Items->AddChild(ANode, "TdxContainerDockSite");
tvClassView->Items->AddChild(ANode, "TdxTabContainerDockSite");
ANode = tvClassView->Items->AddChild(ANode, "TdxSideContainerDockSite");
tvClassView->Items->AddChild(ANode, "TdxHorizContainerDockSite");
tvClassView->Items->AddChild(ANode, "TdxVertContainerDockSite");
tvClassView->Items->AddChild(tvClassView->Items->Item[1], "TdxFloatDockSite");
tvClassView->Items->AddChild(tvClassView->Items->Item[1], "TdxDockSite");
tvClassView->Items->AddChild(tvClassView->Items->Item[0], "TdxDockPanel");
tvClassView->FullExpand();
}
__finally {
tvClassView->Items->EndUpdate();
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::MakeVisible(TdxDockPanel* AControl)
{
if (AControl == NULL) return;
if (!AControl->Visible)
AControl->Visible = true;
dxDockingController()->ActiveDockControl = AControl;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonPageClick(TObject *Sender)
{
switch (((TComponent*)Sender)->Tag) {
case 0: MakeVisible(dpStartPage); break;
case 1: MakeVisible(dpSolutionExplorer); break;
case 2: MakeVisible(dpClassView); break;
case 3: MakeVisible(dpProperties); break;
case 4: MakeVisible(dpToolbox); break;
case 5: MakeVisible(dpCallStack); break;
case 6: MakeVisible(dpOutput); break;
case 7: MakeVisible(dpWatch); break;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonLoadClick(TObject *Sender)
{
if (OpenDialog1->Execute())
dxDockingManager1->LoadLayoutFromIniFile(OpenDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonSaveClick(TObject *Sender)
{
if (SaveDialog1->Execute())
dxDockingManager1->SaveLayoutToIniFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonColorClick(TObject *Sender)
{
ColorDialog1->Color = dxDockingManager1->Color;
if (ColorDialog1->Execute())
dxDockingManager1->Color = ColorDialog1->Color;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonFontClick(TObject *Sender)
{
FontDialog1->Font = dxDockingManager1->Font;
if (FontDialog1->Execute())
dxDockingManager1->Font = FontDialog1->Font;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonStandardViewClick(TObject *Sender)
{
dxDockingManager1->ViewStyle = vsStandard;
BarManager->Style = bmsStandard;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonNETViewClick(TObject *Sender)
{
dxDockingManager1->ViewStyle = vsNET;
BarManager->Style = bmsFlat;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonOffice11ViewClick(TObject *Sender)
{
dxDockingManager1->ViewStyle = vsOffice11;
BarManager->Style = bmsOffice11;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonXPViewClick(TObject *Sender)
{
dxDockingManager1->ViewStyle = vsXP;
BarManager->Style = bmsXP;
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::frStartPage1Label1Click(TObject *Sender)
{
dxBarButtonLoadClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::frStartPage1Label2Click(TObject *Sender)
{
dxBarButtonSaveClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonDockableClick(TObject *Sender)
{
if (FPopupMenuDockControl != NULL) {
FPopupMenuDockControl->Dockable = ((TdxBarButton*)Sender)->Down;
FPopupMenuDockControl = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonHideClick(TObject *Sender)
{
if (FPopupMenuDockControl != NULL) {
FPopupMenuDockControl->Visible = false;
FPopupMenuDockControl = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonFloatingClick(TObject *Sender)
{
TPoint pt;
if ((FPopupMenuDockControl != NULL) && (FPopupMenuDockControl->DockState != dsFloating)) {
GetCursorPos(&pt);
FPopupMenuDockControl->MakeFloating(pt.x, pt. y);
FPopupMenuDockControl = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dxBarButtonAutoHideClick(TObject *Sender)
{
if (FPopupMenuDockControl != NULL) {
FPopupMenuDockControl->AutoHide = ((TdxBarButton*)Sender)->Down;
FPopupMenuDockControl = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::dpContextPopup(TObject *Sender, const TPoint &MousePos, bool &Handled)
{
TPoint pt;
GetCursorPos(&pt);
TdxCustomDockControl* AControl = dxDockingController()->GetDockControlAtPos(pt);
if (AControl != NULL) {
FPopupMenuDockControl = AControl;
dxBarButtonDockable->Down = FPopupMenuDockControl->Dockable;
dxBarButtonFloating->Down = FPopupMenuDockControl->FloatDockSite != NULL;
dxBarButtonAutoHide->Enabled = FPopupMenuDockControl->CanAutoHide();
dxBarButtonAutoHide->Down = FPopupMenuDockControl->AutoHide;
dxBarPopupMenu1->PopupFromCursorPos();
Handled = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TDockingMegaDemoMainForm::UpdateProperties()
{
if ((FDockControl != NULL) && !FDockControl->ComponentState.Contains(csDestroying)) {
cbManagerColor->Enabled = true;
cbManagerColor->Checked = FDockControl->ManagerColor;
cbManagerFont->Enabled = true;
cbManagerFont->Checked = FDockControl->ManagerFont;
eCaption->Enabled = true;
eCaption->Text = FDockControl->Caption;
cbShowCaption->Enabled = true;
cbShowCaption->Checked = FDockControl->ShowCaption;
cbShowCloseButton->Enabled = true;
cbShowCloseButton->Checked = FDockControl->CaptionButtons.Contains(cbClose);
cbShowMaxButton->Enabled = true;
cbShowMaxButton->Checked = FDockControl->CaptionButtons.Contains(cbMaximize);
cbShowHideButton->Enabled = true;
cbShowHideButton->Checked = FDockControl->CaptionButtons.Contains(cbHide);
cbAllowDockLeft->Enabled = true;
cbAllowDockLeft->Checked = FDockControl->AllowDock.Contains(dtLeft);
cbAllowDockTop->Enabled = true;
cbAllowDockTop->Checked = FDockControl->AllowDock.Contains(dtTop);
cbAllowDockRight->Enabled = true;
cbAllowDockRight->Checked = FDockControl->AllowDock.Contains(dtRight);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -