Componentes.Terceros.DevExp.../official/x.19/ExpressQuantumGrid 5/Demos/CBuilder/EditorsStylesDemo/EditorsStylesDemoMain.cpp
2007-09-09 11:27:22 +00:00

391 lines
15 KiB
C++

//---------------------------------------------------------------------------
#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;
cxHintStyleController->HintStyle->Color = clInfoBk;
cxHintStyleController->HintStyle->Font->Color = clBlack;
cxHintStyleController->HintStyle->Font->Height = -11;
cxHintStyleController->HintStyle->Font->Style.Clear();
cxHintStyleController->HintStyle->IconType = cxhiInformation;
cxHintStyleController->HintStyle->IconSize = cxisDefault;
cxHintStyleController->HintStyle->Rounded = false;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetLightSlideLeftHintStyle()
{
if (!ShowHint) ShowHint = true;
cxHintStyleController->HintStyle->Standard = false;
cxHintStyleController->HintStyle->Animate = cxhaSlideFromLeft;
cxHintStyleController->HintStyle->Color = TColor(0x00EDCBB6);
cxHintStyleController->HintStyle->Font->Color = clBlack;
cxHintStyleController->HintStyle->Font->Height = -13;
cxHintStyleController->HintStyle->Font->Style.Clear();
cxHintStyleController->HintStyle->IconType = cxhiCurrentApplication;
cxHintStyleController->HintStyle->IconSize = cxisSmall;
cxHintStyleController->HintStyle->Rounded = false;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetBlueSlideUpHintStyle()
{
if (!ShowHint) ShowHint = true;
cxHintStyleController->HintStyle->Standard = false;
cxHintStyleController->HintStyle->Animate = cxhaSlideUpward;
cxHintStyleController->HintStyle->Color = TColor(0x00EDBB87);
cxHintStyleController->HintStyle->Font->Color = TColor(0x00AD3F29);
cxHintStyleController->HintStyle->Font->Height = -13;
cxHintStyleController->HintStyle->Font->Style.Clear();
cxHintStyleController->HintStyle->IconType = cxhiCustom;
cxHintStyleController->HintStyle->IconSize = cxisDefault;
cxHintStyleController->HintStyle->Rounded = false;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetRoundedInfoHintStyle()
{
if (!ShowHint) ShowHint = true;
cxHintStyleController->HintStyle->Standard = false;
cxHintStyleController->HintStyle->Animate = cxhaFadeIn;
cxHintStyleController->HintStyle->Color = clInfoBk;
cxHintStyleController->HintStyle->Font->Color = clBlack;
cxHintStyleController->HintStyle->Font->Height = -11;
cxHintStyleController->HintStyle->Font->Style.Clear();
cxHintStyleController->HintStyle->IconType = cxhiInformation;
cxHintStyleController->HintStyle->IconSize = cxisDefault;
cxHintStyleController->HintStyle->Rounded = true;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetStandardHintStyle()
{
if (!ShowHint) ShowHint = true;
cxHintStyleController->HintStyle->Color = clInfoBk;
cxHintStyleController->HintStyle->Standard = true;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetNoHintStyle()
{
ShowHint = false;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::SetHintStyle(TcxHintType AHintType)
{
switch (AHintType) {
case hcstLightInfo: {
SetLightInfoHintStyle(); break; }
case hcstLightSlideLeft: {
SetLightSlideLeftHintStyle(); break; }
case hcstBlueSlideUp: {
SetBlueSlideUpHintStyle(); break; }
case hcstRoundedInfo: {
SetRoundedInfoHintStyle(); break; }
case hcstStandard: {
SetStandardHintStyle(); break; }
case hcstNoHint: {
SetNoHintStyle(); break; }
default: SetLightInfoHintStyle();
}
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miCurDisplayStyleClick(
TObject *Sender)
{
((TMenuItem*)Sender)->Checked = true;
UncheckMenuItems(miDefDisplayStyle);
DefaultDisplayStyle = false;
ActiveFrame->DisplayStyle = (TcxStyleSheetType)((TMenuItem*)Sender)->Tag;
gbDescription->Color = ActiveFrame->GetStyleBackgroundColor();
gbDescription->CaptionBkColor = ActiveFrame->GetStyleBackgroundColor();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miDefaultDisplayStyleClick(
TObject *Sender)
{
((TMenuItem*)Sender)->Checked = true;
UncheckMenuItems(miCurDisplayStyle);
DefaultDisplayStyle = true;
FCurrentDisplayStyle = (TcxStyleSheetType)((TMenuItem*)Sender)->Tag;
ActiveFrame->ChangeDisplayStyle((TcxStyleSheetType)((TMenuItem*)Sender)->Tag);
gbDescription->Color = ActiveFrame->GetStyleBackgroundColor();
gbDescription->CaptionBkColor = ActiveFrame->GetStyleBackgroundColor();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miCurHintStyleClick(
TObject *Sender)
{
DefaultHintStyle = false;
UncheckMenuItems(miDefHintStyle);
((TMenuItem*)Sender)->Checked = true;
ActiveFrame->HintStyle = (TcxHintType)((TMenuItem*)Sender)->Tag;
SetHintStyle((TcxHintType)((TMenuItem*)Sender)->Tag);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miHintStyleClick(
TObject *Sender)
{
DefaultHintStyle = true;
UncheckMenuItems(miCurHintStyle);
((TMenuItem*)Sender)->Checked = true;
SetHintStyle((TcxHintType)((TMenuItem*)Sender)->Tag);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miLookAndFeelKindClick(TObject *Sender)
{
LookAndFeelController->Kind = (TcxLookAndFeelKind)((TMenuItem*)Sender)->MenuIndex;
((TMenuItem*)Sender)->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miNativeStyleClick(
TObject *Sender)
{
LookAndFeelController->NativeStyle = !LookAndFeelController->NativeStyle;
((TMenuItem*)Sender)->Checked = LookAndFeelController->NativeStyle;
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miAboutClick(TObject *Sender)
{
ShowAboutDemoForm();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::UpdateFileNameStatusPanel(String AFileName)
{
sbMain->Panels->Items[1]->Text = ExtractFileName(AFileName);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miFileOpenClick(TObject *Sender)
{
ActiveFrame->OpenFile(this);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::miFileSaveClick(TObject *Sender)
{
ActiveFrame->SaveFile(this);
}
//---------------------------------------------------------------------------
void __fastcall TEditorsStylesDemoDemoMainForm::PageControlChange(
TObject *Sender)
{
int APageIndex = PageControl->ActivePage->TabIndex;
if (APageIndex != -1) {
gbDescription->Caption = EditorsStylesDemoFrameManager()->Frames[APageIndex]->Description();
}
}
//---------------------------------------------------------------------------