📄 editorsstylesdemomain.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <shellapi.hpp>
#pragma hdrstop
#include "EditorsStylesDemoMain.h"
#include "EditorsStylesDemoUtils.h"
#include "AboutDemoForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxContainer"
#pragma link "cxControls"
#pragma link "cxDropDownEdit"
#pragma link "cxEdit"
#pragma link "cxFontNameComboBox"
#pragma link "cxGroupBox"
#pragma link "cxHint"
#pragma link "cxLookAndFeels"
#pragma link "cxMaskEdit"
#pragma link "cxMemo"
#pragma link "cxSpinEdit"
#pragma link "cxSplitter"
#pragma link "cxTextEdit"
#pragma link "cxTreeView"
#pragma link "cxPC"
#pragma resource "*.dfm"
TEditorsStylesDemoDemoMainForm *EditorsStylesDemoDemoMainForm;
TEditorsStylesDemoBaseFrame* ActiveFrame;
//---------------------------------------------------------------------------
__fastcall TEditorsStylesDemoDemoMainForm::TEditorsStylesDemoDemoMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::FormCreate(TObject *Sender)
{
RegisterFrames();
AdjustDescriptionsPageControl();
FillTreeViewItems();
cxTreeView->Items->GetFirstNode()->Expand(true);
cxTreeView->Items->GetFirstNode()->Selected = true;
cxTreeViewChange(Sender, cxTreeView->Items->GetFirstNode());
FDefaultHintStyle = false;
FDefaultDisplayStyle = false;
FCurrentDisplayStyle = shtLightBlue;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::RegisterFrames()
{
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(TextProcessingFrameID));
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(ImageProcessingFrameID));
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(SolarSystemFrameID));
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(NoteBookFrameID));
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(IssuesFrameID ));
EditorsStylesDemoFrameManager()->AddFrame(CreateFrameByID(StylesPaletteFrameID));
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AddChildNodes(TcxExtEditorTypes AExtEditorTypes, TStrings* AStrings, TTreeNode* ANode)
{
cxGetEditorsNamesListByTypes(AStrings, AExtEditorTypes);
for (int i=0; i < AStrings->Count; i++)
cxTreeView->Items->AddChild(ANode, AStrings->Strings[i]);
ANode->AlphaSort();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AdjustDescriptionsPageControl()
{
for (int I = 0; I < EditorsStylesDemoFrameManager()->FramesCount; I++){
TcxTabSheet *APage = new TcxTabSheet(PageControl);
APage->PageControl = PageControl;
TEditorsStylesDemoBaseFrame *AFrame = EditorsStylesDemoFrameManager()->Frames[I];
APage->Caption = AFrame->BriefName();
AFrame->pnlDescription->Parent = APage;
AFrame->pnlDescription->Visible = true;
AFrame->pnlDescription->Align = alClient;
AFrame->memDescrip->Properties->WordWrap = true;
APage->ImageIndex = APage->TabIndex;
}
}
void __fastcall TEditorsStylesDemoDemoMainForm::FillTreeViewItems()
{
cxTreeView->Items->Clear();
TStringList* AStrings = new TStringList();
TTreeNode* ANode;
for (int i=0; i < EditorsStylesDemoFrameManager()->FramesCount; i++) {
EditorsStylesDemoFrameManager()->Frames[i]->OnFileNameChanged = UpdateFileNameStatusPanel;
ANode = cxTreeView->Items->AddChildObject(NULL,
EditorsStylesDemoFrameManager()->Frames[i]->Name(), EditorsStylesDemoFrameManager()->Frames[i]);
AddChildNodes(EditorsStylesDemoFrameManager()->Frames[i]->
GetExtEditorTypes(EditorsStylesDemoFrameManager()->Frames[i]), AStrings, ANode);
}
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::FormDestroy(TObject *Sender)
{
delete EditorsStylesDemoFrameManager();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::ClickCorrespondingHintMenuItem(TcxHintType AHintType, bool ADefaultHintStyle)
{
TMenuItem* AMenuItem;
if (!ADefaultHintStyle) {
if (AHintType == hcstNoHint)
AMenuItem = miCurHintStyle->Items[(int)AHintType + 1];
else
AMenuItem = miCurHintStyle->Items[(int)AHintType];
AMenuItem->OnClick(AMenuItem);
}
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AdjustFrameDisplayStyle(TEditorsStylesDemoBaseFrame* AFrame,
bool ADefaultDisplayStyle)
{
if (ADefaultDisplayStyle)
ActiveFrame->ChangeDisplayStyle(FCurrentDisplayStyle);
else {
miCurDisplayStyle->Items[(int)AFrame->DisplayStyle]->Checked = true;
AFrame->DisplayStyle = AFrame->DisplayStyle;
}
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AdjustFileNameStatusPanel()
{
sbMain->Panels->Items[1]->Text = ExtractFileName(ActiveFrame->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AdjustNotePane(TEditorsStylesDemoBaseFrame* AFrame)
{
gbDescription->Color = AFrame->GetStyleBackgroundColor();
gbDescription->CaptionBkColor = AFrame->GetStyleBackgroundColor();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::AdjustFileMenu()
{
miFileOpen->Visible = ActiveFrame->MenuOpenFileVisible();
miFileSave->Visible = ActiveFrame->MenuSaveFileVisible();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::cxTreeViewChange(
TObject *Sender, TTreeNode *Node)
{
String AControlClassName;
if (Node) {
if (Node->Parent) {
AControlClassName = Node->Text;
Node = Node->Parent;
}
TEditorsStylesDemoBaseFrame* AFrame = (TEditorsStylesDemoBaseFrame*)Node->Data;
if (ActiveFrame)
ActiveFrame->Flickering = false;
if ((AFrame) && (AControlClassName != NULL))
AFrame->FlickerControls(AControlClassName);
if (ActiveFrame != AFrame) {
if ((ActiveFrame) && (AFrame)){
ActiveFrame->Visible = false;
ActiveFrame->Parent = NULL;
}
ActiveFrame = AFrame;
ActiveFrame->Parent = cxGroupBox;
ActiveFrame->Visible = true;
ClickCorrespondingHintMenuItem(ActiveFrame->HintStyle, DefaultHintStyle);
AdjustFrameDisplayStyle(ActiveFrame, DefaultDisplayStyle);
AdjustFileMenu();
AdjustNotePane(AFrame);
PageControl->ActivePage = PageControl->Pages[Node->Index];
AdjustFileNameStatusPanel();
miStyle->Visible = AFrame->StyleMenuVisible();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::UncheckMenuItems(TMenuItem* AItems)
{
for (int i=0; i < AItems->Count; i++)
AItems->Items[i]->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetLightInfoHintStyle()
{
if (!ShowHint) ShowHint = true;
cxHintStyleController->HintStyle->Standard = false;
cxHintStyleController->HintStyle->Animate = cxhaFadeIn;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -