我有一种模式用于TComboBox.SelStart
指示编辑文本字符串的进度。在这种模式下,我想对编辑插入符号进行某种更改,例如将其扩大到 2 个像素或以某种方式将其“加粗”以指示此模式并使其吸引更多注意力。这可能吗?
问问题
493 次
1 回答
3
是的,正如 Alex 在他的评论中提到的,这可以使用 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;
于 2012-11-09T01:45:48.517 回答