是否有可能做了一个TCombo编辑符号“宽”或“大胆”呢?(Is it possible to ma

2019-09-22 10:31发布

我有一个使用模式TComboBox.SelStart指示沿编辑文本字符串的进展。 在这种模式下,我想做出某种改变的编辑符号,例如以某种方式来表示这种模式,并把它抓住更多的关注它扩大到2个像素或“大胆”吧。 这可能吗?

Answer 1:

是的,亚历克斯在他的评论中提到的,这可以使用API​​调用来完成。 例:

procedure SetComboCaretWidth(ComboBox: TComboBox; Multiplier: Integer);
var
  EditWnd: HWND;
  EditRect: TRect;
begin
  ComboBox.SetFocus;
  ComboBox.SelStart := -1;
  Assert(ComboBox.Style = csDropDown);

  EditWnd := GetWindow(ComboBox.Handle, GW_CHILD);
  SendMessage(EditWnd, EM_GETRECT, 0, LPARAM(@EditRect));
  CreateCaret(EditWnd, 0,
              GetSystemMetrics(SM_CXBORDER) * Multiplier, EditRect.Height);
  ShowCaret(EditWnd);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetComboCaretWidth(ComboBox1, 4); // bold caret
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetComboCaretWidth(ComboBox1, 1); // default caret
end;


文章来源: Is it possible to made a TCombo edit caret 'wider' or to 'bold' it?