我有一个使用模式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?