📄 ebarmegademomain.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "EBarMegaDemoMain.h"
#include "EBarMegaDemoData.h"
#include "EBarMegaDemoOptions.h"
#include "EBarMegaDemoAbout.h"
#include "EBarsDemoRating.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "dxBar"
#pragma link "dxBarDBNav"
#pragma link "dxBarExtDBItems"
#pragma link "dxBarExtItems"
#pragma link "dxsbar"
#if (__BORLANDC__ >= 0x540) && (__BORLANDC__ < 0x550) // BCB = 4
#pragma link "SHDocVw_OCX_4"
#endif
#if __BORLANDC__ >= 0x550 // BCB = 5, BCB = 6
#pragma link "SHDocVw_OCX"
#endif
#pragma resource "*.dfm"
TEBarMegaDemoMainForm *EBarMegaDemoMainForm;
char
*sRichEditFoundResultCaption = "Information",
*sRichEditTextNotFound = "The search text is not found.",
*sRichEditReplaceAllResult = "Replaced %d occurances.";
//---------------------------------------------------------------------------
__fastcall TEBarMegaDemoMainForm::TEBarMegaDemoMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::FormCreate(TObject *Sender)
{
const AnsiString Filter = "Rich Text Files (*.RTF)|*.RTF";
dmCommonData->AboutFormClass = __classid(TEBarMegaDemoAboutForm);
#if __BORLANDC__ > 0x540 // BCB version > 4
HTML = new TCppWebBrowser(HTMLPanel);
#else
HTML = new TWebBrowserProxy(HTMLPanel);
#endif
HTML->OnDocumentComplete = DocumentComplete;
HTML->OnProgressChange = ProgressChange;
HTML->OnBeforeNavigate2 = BeforeNavigate;
HTML->OnStatusTextChange = StatusTextChange;
HTML->OnTitleChange = TitleChange;
((TWinControl*)HTML)->Parent = HTMLPanel;
HTML->Align = alClient;
Address = "";
ShortDateFormat = "mm/dd/yyyy";
UpdateCombo = true;
OpenDialog->Filter = Filter;
SaveDialog->Filter = Filter;
OpenDialog->InitialDir = ExtractFilePath(ParamStr(0));
SaveDialog->InitialDir = OpenDialog->InitialDir;
Editor->Lines->Clear();
PanelRE->Visible = false;
SetModified(false);
ShowItems(false);
BarManager->LockUpdate = true;
UpdateToolBar(0);
BarManager->LockUpdate = false;
HistoryIndex = -1;
HistoryList = new TStringList;
EBarMegaDemoMainDM->tblProducts->Close();
EBarMegaDemoMainDM->tblContacts->Close();
EBarMegaDemoMainDM->tblProducts->Open();
EBarMegaDemoMainDM->tblContacts->Open();
dxDate->Text = "";
Editor->Lines->LoadFromFile("lipsum.rtf");
SetModified(false);
ShowItems(true);
dxSideBarItemClick(NULL, dxSideBar->Groups->Items[0]->Items->Items[0]);
dxSideBar->SelectedItem = dxSideBar->Groups->Items[0]->Items->Items[0];
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::UpdateToolBar( int index)
{
typedef
Set <int, 0, 12> TVisibleItems;
const
Boolean SunkenBorders[] = {False, False, True, False};
TVisibleItems VisibleBars[] = {
TVisibleItems () << 0,
TVisibleItems () << 0 << 1 << 2 << 3 << 9,
TVisibleItems () << 0 << 4 << 5 << 6 << 9,
TVisibleItems () << 0 << 7 <<8};
TVisibleItems VisibleCategories[] = {
TVisibleItems () << 0 << 4 << 5,
TVisibleItems () << 0 << 1 << 2 << 3 << 4 << 5,
TVisibleItems () << 0 << 1 << 5 << 4 << 6 << 7 << 8 << 10 << 11,
TVisibleItems () << 0 << 4 << 5 << 9 << 12};
int i;
BarManager->SunkenBorder = SunkenBorders[index];
for( i = 0; i < BarManager->Categories->Count ; i++)
BarManager->CategoryVisible[i] = VisibleCategories[index].Contains(i);
for( i = BarManager->Bars->Count - 1; i >= 0; i--)
if ((! VisibleBars[index].Contains(i)) || (i == 0))
{
BarManager->Bars->Items[i]->Visible = false;
BarManager->Bars->Items[i]->Hidden = true;
};
for( i = 0; i < BarManager->ItemCount; i++)
if ((BarManager->Items[i]->Tag == 0 ) || (BarManager->Items[i]->Tag == index))
BarManager->Items[i]->Visible = ivAlways;
else
BarManager->Items[i]->Visible = ivNever;
for( i = 0; i < BarManager->Bars->Count; i++ )
if (VisibleBars[index].Contains(i) || (i == 0))
{
BarManager->Bars->Items[i]->Visible = true;
BarManager->Bars->Items[i]->Hidden = false;
};
Nb->PageIndex = index;
dxBSIEStatus->Caption = "";
dxBSStatus->Caption = "";
dxBSPosition->Caption = "";
dxBarProgress->Position = 0;
dxBSIEStatus->Glyph = 0;
if (index == 2)
dxBSIEStatus->Glyph->Assign(Image->Picture->Bitmap);
}
void __fastcall TEBarMegaDemoMainForm::dxSideBarItemClick(TObject *Sender,
TdxSideBarItem *Item)
{
Caption = "ExpressBars Demo";
LockWindowUpdate(EBarMegaDemoMainForm->Handle);
BarManager->LockUpdate = true;
UpdateToolBar(Item->Tag);
BarManager->LockUpdate = false;
LockWindowUpdate(0);
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::dxBarButtonNewClick(TObject *Sender)
{
int Res;
if (Editor->Modified) {
Res = MessageDlg("Do you want to save the changes you made ?",
mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
switch (Res) {
case mrYes : if (!SaveFile(false)) return; break;
case mrCancel : return;
};
};
Editor->Lines->Clear();
FileName = "";
ShowItems(true);
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::dxBarButtonOpenClick(TObject *Sender)
{
int Res;
if (Editor->Modified) {
Res = MessageDlg("Do you want to save the changes you made to \""+FileName+"\" ?",
mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
switch (Res) {
case mrYes : if (! SaveFile(false)) return; break;
case mrCancel : return;
};
};
OpenDialog->FileName = "";
if (OpenDialog->Execute()) {
FileName = OpenDialog->FileName;
Editor->Lines->LoadFromFile(FileName);
SetModified(false);
ShowItems(true);
};
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::dxBarButtonCloseClick(TObject *Sender)
{
int Res;
if (Editor->Modified) {
Res = MessageDlg("Do you want to save the changes you made to \""+FileName+"\" ?",
mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
switch (Res) {
case mrYes : if (! SaveFile(false)) return; break;
case mrCancel : return;
};
};
Editor->Lines->Clear();
ShowItems(false);
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::EditorChange(TObject *Sender)
{
if (Editor == NULL) return;
Editor->OnSelectionChange(Editor);
SetModified(Editor->Modified);
dxBarButtonUndo->Caption = "&Undo";
dxBarButtonUndo->Enabled = SendMessage(Editor->Handle, EM_CANUNDO, 0, 0) != 0;
}
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::EditorSelectionChange(TObject *Sender)
{
int Col, Row;
Row = SendMessage(Editor->Handle, EM_LINEFROMCHAR, Editor->SelStart, 0);
Col = Editor->SelStart - SendMessage(Editor->Handle, EM_LINEINDEX, Row, 0);
FUpdating = true;
dxBSPosition->Caption = "Line: "+IntToStr(Row + 1)+" Col: "+IntToStr(Col + 1);
dxBarButtonCopy->Enabled = Editor->SelLength > 0;
dxBarButtonCut->Enabled = dxBarButtonCopy->Enabled;
dxBarButtonPaste->Enabled = ((SendMessage(Editor->Handle, EM_CANPASTE, 0, 0) != 0) && dxBarButtonSave->Enabled);
dxBarButtonClear->Enabled = dxBarButtonCopy->Enabled;
dxBarComboFontSize->Text = IntToStr(Editor->SelAttributes->Size);
dxBarComboFontName->Text = Editor->SelAttributes->Name;
dxBarButtonBold->Down = Editor->SelAttributes->Style.Contains(fsBold);
dxBarButtonItalic->Down = Editor->SelAttributes->Style.Contains(fsItalic);
dxBarButtonUnderline->Down = Editor->SelAttributes->Style.Contains(fsUnderline);
dxBarButtonBullets->Down = (bool)(Editor->Paragraph->Numbering);
switch (Editor->Paragraph->Alignment) {
case 0: dxBarButtonAlignLeft->Down = true; break;
case 1: dxBarButtonAlignRight->Down = true; break;
case 2: dxBarButtonCenter->Down = true; break;
};
dxBarButtonURLDetection->Down = (bool)(SendMessage(Editor->Handle, EM_GETAUTOURLDETECT, 0, 0));
dxBarComboFontColor->Color = Editor->SelAttributes->Color;
FUpdating = false;
}
//---------------------------------------------------------------------------
bool __fastcall TEBarMegaDemoMainForm::SaveFile(bool ASaveAs)
{
bool Res;
if (ASaveAs || (FileName == "")) {
SaveDialog->FileName = FileName;
Res = SaveDialog->Execute();
if (! Res) return (Res);
FileName = SaveDialog->FileName;
};
Editor->Lines->SaveToFile(FileName);
SetModified(false);
return(true);
};
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::SetModified(bool Value)
{
Editor->Modified = Value;
if (Value)
dxBSStatus->Caption = "Modified";
else
dxBSStatus->Caption = "";
if (FileName != "")
dxBarButtonSave->Enabled = Value;
};
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::ShowItems(bool AShow)
{
TdxBarItemVisible AVisible;
if (! AShow) {
dxBSStatus->Caption = "";
dxBSPosition->Caption = "";
};
BarManager->Groups[0]->Enabled = AShow;
if (AShow) AVisible = ivAlways;
else AVisible = ivInCustomizing;
dxBarSubItemEdit->Visible = AVisible;
dxBarSubItemFormat->Visible = AVisible;
PanelRE->Visible = AShow;
Editor->Repaint();
};
//---------------------------------------------------------------------------
void __fastcall TEBarMegaDemoMainForm::dxBarButtonExitClick(TObject *Sender)
{
Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -