如何在RichEdit中实现上标下标

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

近来有好多朋友问如何在RichEdit中实现上标下标,查了好多资料都没找到。今天无意间在Delphi区闲逛,看到一份实现上下标的文章,于是整理成CB语言的贴出来。

以下代码已测试通过。在Form中放置一个RichEdit,两个Button,完整代码如下:

//---------------------------------------------------------------------------

typedef enum

{

CFM_Superscript, // 上标

CFM_Subscript, // 下标

CFM_Normal // 普通文本

}TCharacterFormat;

void MySetCharFormat(TRichEdit *RichEdit, TCharacterFormat CharacterFormat)

{

// ccrun(老妖)根据Delphi超级猛料中的资料修改而成

// 欢迎光临 C++ Builder 研究 http://www.ccrun.com

TCharFormat Format;

Format.cbSize = sizeof(Format);

Format.dwMask = CFM_OFFSET;

// Character offset, in twips, from the baseline.

// If the value of this member is positive,

// the character is a superscript;

// if it is negative, the character is a subscript.

switch(CharacterFormat)

{

case CFM_Superscript:

Format.yOffset = 60;

break;

case CFM_Subscript:

Format.yOffset = -60;

break;

case CFM_Normal:

Format.yOffset = 0;

break;

default:

break;

}

// The EM_SETCHARFORMAT message sets character formatting in a rich edit control.

// SCF_SELECTION: Applies the formatting to the current selection

RichEdit->Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(&Format));

}

//---------------------------------------------------------------------------

// 先选中Richedit中的部分文本,然后点击此按钮,选中文本将变成上标

void __fastcall TForm1::Button1Click(TObject *Sender)

{

// 上标

MySetCharFormat(RichEdit1, CFM_Superscript);

}

//---------------------------------------------------------------------------

// 先选中Richedit中的部分文本,然后点击此按钮,选中文本将变成下标

void __fastcall TForm1::Button2Click(TObject *Sender)

{

// 下标

MySetCharFormat(RichEdit1, CFM_Subscript);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航