读书人

RichEdit 光标判断粗/细体等有关问题 .

发布时间: 2013-10-01 12:15:56 作者: rapoo

RichEdit 光标判断粗/细体等问题 ..
如何判断 RichEdit 中光标所在的文字是否有粗体,
若有就将粗体按钮 Down=true; 若无就将粗体按钮 Down=false;
我已经写好代码,但将文字粗体后,按钮一直为 Down=true;
点别的未粗体的文字不会 Down=false 回来。

照做 BCB6 RichEdit 例子,一样没效,该用哪种代码判断呢? RichEdit 光标 粗体 SelAttributes fsBold
[解决办法]

void __fastcall TMainForm::SelectionChange(TObject */*Sender*/)
{
TParaAttributes *Paragraph = RichEdit1->Paragraph;
TTextAttributes *SelAttributes = RichEdit1->SelAttributes;
char sizebuf[6];

try
{
FUpdating = True;
FirstInd->Left = AsInt(Paragraph->FirstIndent*RulerAdj)
- 4 + GutterWid;
LeftInd->Left = AsInt((Paragraph->LeftIndent + Paragraph->FirstIndent)
* RulerAdj) - 4 + GutterWid;
RightInd->Left = Ruler->ClientWidth-6-AsInt((Paragraph->RightIndent
+ GutterWid) * RulerAdj);

BoldButton->Down = SelAttributes->Style.Contains(fsBold);
ItalicButton->Down = SelAttributes->Style.Contains(fsItalic);
UnderlineButton->Down = SelAttributes->Style.Contains(fsUnderline);

BulletsButton->Down = static_cast<bool>(Paragraph->Numbering);

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

switch(AsInt(Paragraph->Alignment))
{
case 0:
LeftAlign->Down = True;
break;

case 1:
RightAlign->Down = True;
break;

case 2:
CenterAlign->Down = True;
break;
}
}
__finally
{
FUpdating = False;
}
}

[解决办法]
就这句话,实现了功能!!!
BoldButton->Down = SelAttributes->Style.Contains(fsBold);

读书人网 >C++ Builder

热点推荐