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

📄 edit2ff.cpp

📁 C++Builder编程实例详解,用具体的例子阐明C++的一些基本操作,所有程序均在BC++上编译过.可靠,建议下载
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop

#include "Edit2ff.h"
#include "Edit2f.h"
//---------------------------------------------------------------------------

const float RulerAdj = 4.0/3.0;
const int GutterWid = 4;

#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    RichEdit1->Lines->Clear(); // 清空文本
    ReadOnly = false;
    FileName = "Untitled"; // 设置缺省文件名
    RichEdit1->SelAttributes->Name = Form1->FontName->Text;//"宋体";
    RichEdit1->SelAttributes->Size = 12;
    RichEdit1->HideSelection = false;
    Caption = FileName;
    RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FirstInd->Width/2-GutterWid) /RulerAdj);
    RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+LeftInd->Width/2-GutterWid)/
            RulerAdj)-RichEdit1->Paragraph->FirstIndent;
    RichEdit1->Paragraph->RightIndent =
            int((Ruler->ClientWidth-RightInd->Left+RightInd->Width/2-2) /
            RulerAdj)-2*GutterWid;
    RichEdit1->Modified = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::RichEdit1SelectionChange(TObject *Sender)
{
    char sizebuf[11];

    if(RichEdit1->SelLength)
    { // 有选择文本
        Form1->Cut->Enabled = true;
        Form1->Copy->Enabled = true;
        Form1->sCut->Enabled = true;
        Form1->sCopy->Enabled = true;
    }
    else
    { // 未选择文本
        Form1->Cut->Enabled = false;
        Form1->Copy->Enabled = false;
        Form1->sCut->Enabled = false;
        Form1->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);

    // 设置字型按钮
    Form1->sBold->Down = RichEdit1->SelAttributes->Style.Contains(fsBold);
    Form1->sItalic->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic);
    Form1->sUnderline->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline);

    Form1->BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering);

    Form1->FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10);
    Form1->FontName->Text = RichEdit1->SelAttributes->Name;

    // 设置段落对齐按钮
    switch((int)RichEdit1->Paragraph->Alignment)
    {
        case 0:
            Form1->sLeftAlign->Down   = True;
            break;
        case 1:
            Form1->sRightAlign->Down  = True;
            break;
        case 2:
            Form1->sCenterAlign->Down = True;
            break;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::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 TForm2::RulerIndMouseMove(TObject *Sender, TShiftState Shift,
	int X, int Y)
{
    if(FDragging)
    {   // 正在拖动
        TLabel * oTmpLabel = (TLabel *)Sender;
        oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; // 设置箭头位置
    }
	
}
//---------------------------------------------------------------------------
void __fastcall TForm2::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 TForm2::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 TForm2::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;

}
//---------------------------------------------------------------------------
void __fastcall TForm2::RichEdit1MouseUp(TObject *Sender, TMouseButton Button,
	TShiftState Shift, int X, int Y)
{
    if(Button == mbRight)
    { // 弹出菜单
        TPoint P, Q;
        P.x=X;
        P.y=Y;
        Q = ClientToScreen(P);
        Form1->PopupMenu1->Popup(Q.x, Q.y);
                // 参数 X 和 Y 是相对坐标(相对RichEdit1内的位置)
                // 而 Popup 方法中使用的参数是屏幕坐标
                // 需要将 X、Y 参数转换为屏幕坐标。
                // 也可以使用 ClinetToScreen 方法直接转换 X、Y 参数。
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::RulerResize(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->Left = 2;
    RulerLine->Width = Ruler->Width-5; // 设置标尺线
    RightInd->Left = Ruler->ClientWidth-6-int((RichEdit1->Paragraph->RightIndent
            +GutterWid)*RulerAdj);

}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree; // 指定删除窗体
                     // MDI子窗体缺省时为最小化窗体
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCloseQuery(TObject *Sender, bool &CanClose)
{
    CanClose = Form1->CheckFileSave(); // 判断是否需要保存文件
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -