Delphi 如何设置TRichedit默认段落背景色
我尝试使用以下代码设置Delphi 如何设置TRichedit默认段落背景色,delphi,winapi,delphi-7,Delphi,Winapi,Delphi 7,我尝试使用以下代码设置TRichEdit控制默认段落背景颜色: //****************************************************************************** class procedure TRichEditUtility.setBGColor( aRE_ : TTNTRichEdit; bgColor_ : cardinal; default_ : boolean = FALSE ); //******************
TRichEdit
控制默认段落背景颜色:
//******************************************************************************
class procedure TRichEditUtility.setBGColor( aRE_ : TTNTRichEdit; bgColor_ : cardinal; default_ : boolean = FALSE );
//******************************************************************************
var
cf: TCharFormat2;
begin
if ( aRE_ <> NIL ) then
begin
fillchar(cf, sizeof(cf), 0);
cf.cbSize := sizeof( cf );
cf.dwMask := CFM_BACKCOLOR;
cf.crBackColor := bgColor_;
if ( default_ ) then
aRE_.Perform( EM_SETCHARFORMAT, SPF_SETDEFAULT, lparam(@cf) )
else
aRE_.Perform( EM_SETCHARFORMAT, SCF_SELECTION, lparam(@cf) );
end else
raise EInvalidInputParameter.create_string( 'TRichEditUtility', 'setBGColor', 'aRE_', CONST_chars_NIL );
end;
//******************************************************************************
类过程tricheditivity.setBGColor(aRE:TTNTRichEdit;bgColor:基数;默认值:boolean=FALSE);
//******************************************************************************
变量
cf:TCharFormat2;
开始
如果(为零),则
开始
fillchar(cf,sizeof(cf),0);
cf.cbSize:=sizeof(cf);
cf.dwMask:=CFM_背景色;
cf.crBackColor:=bgColor_382;;
如果(默认值),则
正在执行(EM_SETCHARFORMAT、SPF_SETDEFAULT、lparam(@cf))
其他的
执行(EM_SETCHARFORMAT,SCF_选择,lparam(@cf));
结束其他
提高EInvalidInputParameter。创建字符串('Tricheditivity','setBGColor','aRE',CONST_chars_NIL);
结束;
但是SPF_SETDEFAULT
常量的值未知
有人能告诉我它的价值吗?(或定义其值的文件名)以下是如何解决此问题以及任何此类问题
- 对
执行Web搜索SPF\u SETDEFAULT
- 这将带您访问的文档
- 该文档将
列为所需的标题Richedit.h
- 在Windows SDK副本中找到
,然后搜索Richedit.h
SPF_SETDEFAULT
- 该搜索将产生以下结果:
#定义SPF\u设置默认值0x0004
- 因此,在Delphi中,您可以这样定义常量:
const SPF_SETDEFAULT=$0004
0x0004
要好。这正是您所指的或定义其值的文件名。仅供参考,SCF_ALL
——另一个与EM_SETCHARFORMAT
(在Delphi的RichEdit.pas
单元中定义)一起使用的标志也被定义为0x0004。因此,相同消息的两个标志具有相同的值似乎存在冲突。FWIW,SPF_SETDEFAULT
在XE8附带的Windows SDK中没有声明(我还没有检查西雅图)。@Remy它是在MS提供的SDK中定义的。不知道Emba是从哪里得到C++Builder附带的SDK的。@DavidHeffernan:他们是从微软那里得到的。他们通常在发布新IDE时获得当前可用的内容,但他们必须自定义一些SDK头以解决编译器问题。我们知道是哪个SDK引入了SPF_SETDEFAULT
define吗?顺便说一句,我见过使用SPF_SETDEFAULT
和EM_SETPARAFORMAT
而不是EM_SETCHARFORMAT
的代码,尽管没有这样的文档记录SPF_SETDEFAULT
在EM_SETPARAFORMAT
中更有意义(并且与SPF_
前缀一致)。