git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@7 05c56307-c608-d34a-929d-697000501d7a
402 lines
14 KiB
C++
402 lines
14 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "EditorsStylesDemoRichEdit.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma link "cxContainer"
|
|
#pragma link "cxControls"
|
|
#pragma link "cxEdit"
|
|
#pragma link "cxMemo"
|
|
#pragma link "cxPropertiesStore"
|
|
#pragma link "cxTextEdit"
|
|
#pragma link "EditorsStylesDemoBase"
|
|
#pragma link "cxButtons"
|
|
#pragma link "cxColorComboBox"
|
|
#pragma link "cxDropDownEdit"
|
|
#pragma link "cxFontNameComboBox"
|
|
#pragma link "cxLookAndFeelPainters"
|
|
#pragma link "cxMaskEdit"
|
|
#pragma link "cxSpinButton"
|
|
#pragma link "cxSpinEdit"
|
|
#pragma link "cxRichEdit"
|
|
#pragma resource "*.dfm"
|
|
TEditorsStylesDemoRichEditFrame *EditorsStylesDemoRichEditFrame;
|
|
String FFileName = "Untitled";
|
|
String ButtonString = "Color Palette: ";
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TEditorsStylesDemoRichEditFrame::TEditorsStylesDemoRichEditFrame(TComponent* Owner)
|
|
: TEditorsStylesDemoBaseFrame(Owner)
|
|
{
|
|
OpenDialog->InitialDir = ExtractFilePath(ParamStr(0));
|
|
SaveDialog->InitialDir = OpenDialog->InitialDir;
|
|
SetFileName("lipsum.rtf");
|
|
RichEdit->Lines->LoadFromFile("lipsum.rtf");
|
|
CurrText()->Name = "MS Sans Serif";
|
|
RichEditSelectionChange(this);
|
|
ColorSchemeButtonClick(miStandard);
|
|
|
|
HintStyle = hcstLightInfo;
|
|
FDisplayStyle = shtLightBlue;
|
|
FTempDisplayStyle = shtLightBlue;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
String __fastcall TEditorsStylesDemoRichEditFrame::Name()
|
|
{
|
|
return "Text Processing";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
String __fastcall TEditorsStylesDemoRichEditFrame::BriefName()
|
|
{
|
|
return "Text";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
bool TEditorsStylesDemoRichEditFrame::MenuOpenFileVisible()
|
|
{
|
|
return true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
bool TEditorsStylesDemoRichEditFrame::MenuSaveFileVisible()
|
|
{
|
|
return true;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void TEditorsStylesDemoRichEditFrame::OpenFile(TObject* Sender)
|
|
{
|
|
actOpenExecute(NULL);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void TEditorsStylesDemoRichEditFrame::SaveFile(TObject* Sender)
|
|
{
|
|
actSaveFileExecute(NULL);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
String TEditorsStylesDemoRichEditFrame::StylesIniPath()
|
|
{
|
|
return "StylesFrmRichEdit\\";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
TColor TEditorsStylesDemoRichEditFrame::GetStyleBackgroundColor()
|
|
{
|
|
return (RichEdit->Style->Color);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
String TEditorsStylesDemoRichEditFrame::Description()
|
|
{
|
|
return "Text Processing Notes";
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditCutExecute(
|
|
TObject *Sender)
|
|
{
|
|
RichEdit->CutToClipboard();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditCopyExecute(
|
|
TObject *Sender)
|
|
{
|
|
RichEdit->CopyToClipboard();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditPasteExecute(
|
|
TObject *Sender)
|
|
{
|
|
RichEdit->PasteFromClipboard();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actOpenExecute(TObject *Sender)
|
|
{
|
|
if (OpenDialog->Execute()) {
|
|
FFileName = OpenDialog->FileName;
|
|
RichEdit->Lines->LoadFromFile(FFileName);
|
|
RichEdit->Properties->ReadOnly = OpenDialog->Options.Contains(ofReadOnly);
|
|
DoOnFileNameChanged();
|
|
FChanged = False;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actPrintExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (PrintDialog->Execute())
|
|
RichEdit->Print(FFileName);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actSaveFileExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FFileName == "Untitled") {
|
|
if (SaveDialog->Execute()) {
|
|
if (FileExists(SaveDialog->FileName)) {
|
|
TMsgDlgButtons buttons = mbYesNoCancel;
|
|
|
|
if (MessageDlg(Format("Overwrite?", ARRAYOFCONST((SaveDialog->FileName))),
|
|
mtConfirmation, buttons, 0) != mrYes) return;
|
|
}
|
|
RichEdit->Lines->SaveToFile(SaveDialog->FileName);
|
|
SetFileName(SaveDialog->FileName);
|
|
FChanged = False;
|
|
}
|
|
}
|
|
else {
|
|
RichEdit->Lines->SaveToFile(FFileName);
|
|
FChanged = False;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actNewFileExecute(
|
|
TObject *Sender)
|
|
{
|
|
SetFileName("Untitled");
|
|
RichEdit->Lines->Clear();
|
|
FChanged = False;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditCutUpdate(
|
|
TObject *Sender)
|
|
{
|
|
((TCustomAction*)Sender)->Enabled = (RichEdit) && (RichEdit->SelLength > 0);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditCopyUpdate(
|
|
TObject *Sender)
|
|
{
|
|
((TCustomAction*)Sender)->Enabled = actEditCut->Enabled;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actEditPasteUpdate(
|
|
TObject *Sender)
|
|
{
|
|
((TCustomAction*)Sender)->Enabled = RichEdit->HandleAllocated() &&
|
|
(RichEdit->Perform(EM_CANPASTE, 0, 0) != 0);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::RichEditSelectionChange(
|
|
TObject *Sender)
|
|
{
|
|
try {
|
|
FUpdating = true;
|
|
BoldButton->Down = CurrText()->Style.Contains(fsBold);
|
|
ItalicButton->Down = CurrText()->Style.Contains(fsItalic);
|
|
UnderlineButton->Down = CurrText()->Style.Contains(fsUnderline);
|
|
BulletsButton->Down = (bool)RichEdit->Paragraph->Numbering;
|
|
meFontSize->Text = IntToStr(CurrText()->Size);
|
|
fcbFontName->EditValue = CurrText()->Name;
|
|
cxColorComboBox->EditValue = CurrText()->Color;
|
|
switch ((int)RichEdit->Paragraph->Alignment) {
|
|
case 0: {LeftAlign->Down = true; break;}
|
|
case 1: {RightAlign->Down = true; break;}
|
|
case 2: {CenterAlign->Down = true; break;}
|
|
}
|
|
}
|
|
__finally {
|
|
FUpdating = false;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::SetFileName(String AFileName)
|
|
{
|
|
FFileName = AFileName;
|
|
DoOnFileNameChanged();
|
|
Caption = Format("%s - %s", ARRAYOFCONST((ExtractFileName(AFileName), Application->Title)));
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
TTextAttributes* __fastcall TEditorsStylesDemoRichEditFrame::CurrText()
|
|
{
|
|
return RichEdit->SelAttributes;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::ColorSchemeButtonClick(
|
|
TObject *Sender)
|
|
{
|
|
if (!((TMenuItem*)Sender)->Checked) {
|
|
int cl = VarAsType(cxColorComboBox->EditValue, varInteger);
|
|
TColor AColor = TColor(cl);
|
|
((TMenuItem*)Sender)->Checked = true;
|
|
switch (((TComponent*)Sender)->Tag) {
|
|
case 0: {
|
|
cxColorComboBox->Properties->PrepareDelphiColorList(false, false);
|
|
cxColorComboBox->Properties->NamingConvention = cxncDelphi;
|
|
btnColorSchemes->Caption = ButtonString + "Delphi Colors";
|
|
break; }
|
|
case 1: {
|
|
cxColorComboBox->Properties->PrepareHTML4ColorList(false, false);
|
|
cxColorComboBox->Properties->NamingConvention = cxncHTML4;
|
|
btnColorSchemes->Caption = ButtonString + "16 Standard Colors";
|
|
break; }
|
|
case 2: {
|
|
cxColorComboBox->Properties->PrepareX11ColorList(false, false);
|
|
cxColorComboBox->Properties->NamingConvention = cxncX11;
|
|
btnColorSchemes->Caption = ButtonString + "Web Colors";
|
|
break; }
|
|
case 3: {
|
|
cxColorComboBox->Properties->PrepareX11OrderedColorList(false, false);
|
|
cxColorComboBox->Properties->NamingConvention = cxncX11;
|
|
btnColorSchemes->Caption = ButtonString + "Web Colors By Hue";
|
|
break; }
|
|
}
|
|
TcxCustomColorComboBoxPropertiesAccess* AProperties = (TcxCustomColorComboBoxPropertiesAccess*)cxColorComboBox->Properties;
|
|
int AIndex = AProperties->IndexByValue(cxColorComboBox->EditValue);
|
|
if (AIndex != -1) {
|
|
String S = AProperties->GetDescriptionByIndex(AIndex);
|
|
AProperties->Items->Items[AIndex]->Description = S;
|
|
}
|
|
cxColorComboBox->EditValue = AColor;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::meFontSizePropertiesChange(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
if (meFontSize->EditText != "")
|
|
CurrText()->Size = StrToInt(meFontSize->EditText);
|
|
else
|
|
CurrText()->Size = 0;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::fcbFontNamePropertiesChange(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
CurrText()->Name = ((TcxFontNameComboBox*)Sender)->Text;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::cxColorComboBoxPropertiesChange(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
if (cxColorComboBox->ItemIndex != -1) {
|
|
int cl = VarAsType(cxColorComboBox->EditValue, varInteger);
|
|
CurrText()->Color = TColor(cl);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actBoldExecute(TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
if (BoldButton->Down)
|
|
CurrText()->Style = CurrText()->Style + (TFontStyles() << fsBold);
|
|
else
|
|
CurrText()->Style = CurrText()->Style - (TFontStyles() << fsBold);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actItalicExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
if (ItalicButton->Down)
|
|
CurrText()->Style = CurrText()->Style + (TFontStyles() << fsItalic);
|
|
else
|
|
CurrText()->Style = CurrText()->Style - (TFontStyles() << fsItalic);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actUnderlineExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating) return;
|
|
if (UnderlineButton->Down)
|
|
CurrText()->Style = CurrText()->Style + (TFontStyles() << fsUnderline);
|
|
else
|
|
CurrText()->Style = CurrText()->Style - (TFontStyles() << fsUnderline);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actAlignLeftExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating || (RichEdit == NULL)) return;
|
|
RichEdit->Paragraph->Alignment = (TAlignment)((TControl*)Sender)->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actAlignRightExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating || (RichEdit == NULL)) return;
|
|
RichEdit->Paragraph->Alignment = (TAlignment)((TControl*)Sender)->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actAlignCenterExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating || (RichEdit == NULL)) return;
|
|
RichEdit->Paragraph->Alignment = (TAlignment)((TControl*)Sender)->Tag;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actBulletsExecute(
|
|
TObject *Sender)
|
|
{
|
|
if (FUpdating || (RichEdit == NULL)) return;
|
|
RichEdit->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::fcbFontNamePropertiesFontPreviewButtonClick(
|
|
TObject *Sender, TcxFontButtonType ButtonType)
|
|
{
|
|
CurrText()->Style = fcbFontName->Properties->FontPreview->FontStyle;
|
|
RichEditSelectionChange(NULL);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::fcbFontNamePropertiesInitPopup(
|
|
TObject *Sender)
|
|
{
|
|
fcbFontName->Properties->FontPreview->FontStyle = CurrText()->Style;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::actSaveFileUpdate(
|
|
TObject *Sender)
|
|
{
|
|
((TCustomAction*)Sender)->Enabled = FChanged;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::FormShow(TObject *Sender)
|
|
{
|
|
FChanged = False;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TEditorsStylesDemoRichEditFrame::RichEditPropertiesChange(
|
|
TObject *Sender)
|
|
{
|
|
FChanged = True;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|