お世話になっております。
Delphi2007,XPです。
Form1にComboBox1を配置し、
procedure TForm1.FormCreate(Sender: TObject);
begin
combobox1.AddItem('aaa',self);
combobox1.AddItem('bbb',self);
combobox1.ItemIndex :=0;
end;
とすると、起動時にComboBox1の値がaaaとなったコンボボックスが表示されますが、このとき、コンボボックスが選択された状態で、ハイライト表示されています。
これを、ハイライト表示しない状態にしてコンボボックスを表示したい場合、どうしたらよいでしょうか。
よろしくお願いします。
例えば、
ComboBox1.TabStop := False;
では駄目かな?。
Form1.ActiveControlを別のコントロールに設定する。
複数のコントロールがあって、最初のフォーカスがComboBox1でないものを選びたいのであれば、あさんのいうようにActiveControlの設定ですね。
1つしかなくて、タブでフォーカスが当たらなくてよいのであれば、初心者さんのいうようにTabStopをfalseにしておけばよいかと思います。
さらにタブでフォーカスするようにしたければ、Form1のOnActivateイベントでComboBox1.TabStop := True;
と戻しておきます。
ありがとうございます。
実は、書いていなかったんですが、上記のような1つのcomboboxだけでなく、Panel上に数十個のcomboboxがあります。
それで、それらすべてがハイライト表示になっているんです。
すべてのComboBox.TabStop := False;
を試してみましたが、すべてハイライト表示されてしまいます。
あと、行っている処理とすれば、位置とサイズの変更、DropDownCountの変更、Parentの変更などです。
それと、選択肢にない(AddItemしていない)値を入力したComboboxは、他はされても、それだけハイライト表示されません。
すみませんが、よろしくお願いします。
> 位置とサイズの変更
Style=csDropDownなコンボボックスのサイズを変更すると
エディット部分の文字列が全選択状態になるというバグがあった気がするですよ。
Delphi7でIDE上で試してみたら現象が出ました。
対処法としてはSelLenthで選択を解除するか
リサイズしない、csDropDownListにするってあたりかな。
ありがとうございます。
すべてのComboBoxの位置を変更したあと、SelLength:=0を実行したら、ハイライト表示が消えました。
ツイート | ![]() |