TComboBox.SelStart
編集テキスト文字列に沿って進行状況を示すために使用するモードがあります。このモードでは、編集カレットに何らかの変更を加えたいと思います。たとえば、編集カレットを2ピクセルに広げるか、このモードを示してより注意を引くために何らかの方法で「太字」にします。これは可能ですか?
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 に答える