📄 edit1f.cpp
字号:
}
else
{ // 未选择文本
Cut->Enabled = false;
Copy->Enabled = false;
sCut->Enabled = false;
sCopy->Enabled = false;
}
// 设置标尺位置
FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)-
4+GutterWid;
LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+
RichEdit1->Paragraph->FirstIndent)*RulerAdj)-
4+GutterWid;
RightInd->Left = Ruler->ClientWidth-6-int((RichEdit1->Paragraph->RightIndent
+GutterWid)*RulerAdj);
// 设置字型按钮
sBold->Down = RichEdit1->SelAttributes->Style.Contains(fsBold);
sItalic->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic);
sUnderline->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline);
BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering);
FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10);
FontName->Text = RichEdit1->SelAttributes->Name;
// 设置段落对齐按钮
switch((int)RichEdit1->Paragraph->Alignment)
{
case 0:
sLeftAlign->Down = True;
break;
case 1:
sRightAlign->Down = True;
break;
case 2:
sCenterAlign->Down = True;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sBoldClick(TObject *Sender)
{
if(sBold->Down)
{ // sBold 按钮按下
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style << fsBold;
// Style 属性的各二进制位分别代表不同的类型,
// 该类型的变量可以用“<<”操作时设置,用“>>”取消设置
}
else
{
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style >> fsBold;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sItalicClick(TObject *Sender)
{
if(sItalic->Down)
{ // 斜体键按下
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style << fsItalic;
}
else
{
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style >> fsItalic;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sUnderlineClick(TObject *Sender)
{
if(sUnderline->Down)
{ // 粗体键按下
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style << fsUnderline;
}
else
{
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style >> fsUnderline;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FontNameChange(TObject *Sender)
{
RichEdit1->SelAttributes->Name =
FontName->Items->Strings[FontName->ItemIndex];
RichEdit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FontSizeChange(TObject *Sender)
{
int fontsize = atoi(FontSize->Text.c_str()); // 将文本转换为整数
if (fontsize)
{ // fontsize 大于0
if (fontsize < 1)
{ // 小于1
ShowMessage("The number must be between 1 and 1638.");
FontSize->Text = 1;
}
else if (fontsize > 1638)
{ // fontsize 过大
ShowMessage("The number must be between 1 and 1638.");
FontSize->Text = 1638;
}
RichEdit1->SelAttributes->Size = atoi(FontSize->Text.c_str());
// SelAttributes 对象用于设置选择文本的字体、颜色、等
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AlignButton(TObject *Sender)
{
TControl *cTmp = (TControl*)(Sender);
RichEdit1->Paragraph->Alignment = (TAlignment)cTmp->Tag;
// Paragraph 对象用于设置段落属性
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BulletsButtonClick(TObject *Sender)
{
RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
RichEdit1->HideSelection = false;
// 初始化字体
// 该设置不能在 FormCreate 事件中进行,
// 因为是当窗体创建时触发 FormCreate 事件,而此时尚未创建 RichEdit1 控件。
FontName->Text = "宋体";
RichEdit1->SelAttributes->Name = FontName->Text;//"宋体";
RichEdit1->SelAttributes->Size = 12;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PrintSetupClick(TObject *Sender)
{
PrinterSetupDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sPrintClick(TObject *Sender)
{
RichEdit1->Print(FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FontNameKeyPress(TObject *Sender, char &Key)
{
Key = '\n';
RichEdit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FontSizeKeyPress(TObject *Sender, char &Key)
{
if(Key == '\r')
{ // 用户输入回车键
RichEdit1->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PrintClick(TObject *Sender)
{
if(PrintDialog1->Execute())
{ // 打印
RichEdit1->Print(FileName);
}
}
//---------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
int iCtr = 0;
char sTmp[201];
while (iCtr < 200) {
sTmp[iCtr] = '\t';
iCtr++;
sTmp[iCtr] = '|';
iCtr++;
}
sTmp[200] = '\0';
Ruler->Caption = (AnsiString)sTmp; // 画标尺
RulerLine->Width = Ruler->Width-5; // 设置标尺线
RightInd->Left = Ruler->ClientWidth-6-int((RichEdit1->Paragraph->RightIndent
+GutterWid)*RulerAdj);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RulerIndMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
TLabel * oTmpLabel = (TLabel *)Sender;
FDragOfs = X; // 保存箭头偏移量
//oTmpLabel->Width / 2; // 保存箭头偏移量
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs;
FDragging = True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RulerIndMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(FDragging)
{ // 正在拖动
TLabel * oTmpLabel = (TLabel *)Sender;
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; // 设置箭头位置
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FirstIndMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
TLabel *oTmpLabel = (TLabel *)Sender;
FDragOfs = oTmpLabel->Width / 2;
FDragging = false; // 停止拖动
RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj);
LeftIndMouseUp(Sender, Button, Shift, X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LeftIndMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
TLabel *oTmpLabel = (TLabel *)Sender;
FDragOfs = oTmpLabel->Width / 2; // 计算箭头中心位置
FDragging = false; // 停止拖动
RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/
RulerAdj)-RichEdit1->Paragraph->FirstIndent;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RightIndMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
TLabel *oTmpLabel = (TLabel *)Sender;
FDragOfs = oTmpLabel->Width / 2; // 计算箭头中心位置
FDragging = false; // 停止拖动
RichEdit1->Paragraph->RightIndent =
int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) /
RulerAdj)-2*GutterWid;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -