簡體   English   中英

在為所選文本設置背景顏色后,將字體分配給TRichEdit

[英]Assigning a font to a TRichEdit after setting background colour for selected text

我的Delphi表單上有一個TRichEdit控件,我使用perform方法為控件發送一個窗口消息,為文本的某些部分指定背景顏色。 (在調用此代碼之前,使用SelStart和SelLength選擇文本)。

FillChar(Format, SizeOf(Format), 0);
with Format do
begin
  cbSize := SizeOf(Format);
  dwMask := CFM_BACKCOLOR;
  crBackColor := AColor;
  fRichEdit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;

我也希望用戶可以更改字體(整個字體,它不像背景突出顯示那樣),所以當他們想要修改編輯框的字體時,我向用戶展示TFon​​tDialog ,我將字體分配給TRichEdit控件的字體。

RichEdit.Font.Assign(SelectedFont);

但是,使用Windows消息似乎會阻止字體更新。 當我注釋掉perform方法時,一切正常,但是當我取消注釋該行時,字體不會更新。

我是Windows消息的新手,請解釋為什么會發生這種情況。

您正在設置的Font屬性將整個RichEdit的字體設置為整體,而不是當前文本選擇。 如果要設置每個選擇字體,則需要使用通過EM_SETCHARFORMAT傳遞的CHARFORMAT記錄的szFaceNameyHeightbCharset字段。 無法在每個選擇的基礎上分配TFont對象,甚至是HFONT句柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM