⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit1f.cpp

📁 C++Builder编程实例详解,用具体的例子阐明C++的一些基本操作,所有程序均在BC++上编译过.可靠,建议下载
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    }
    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 + -