• ベストアンサー

VB6.0で、コンボボックスの背景を白色にしたい

VB6.0で、Formのコントロールを使用せず、 CreateWindowEx関数を使って、コンボボックスを作成し、 (たしか、ウィンドウクラス名(PCTSTR pszClassName)に、 "COMBOBOX"を、セットしたら、コンボボックスが作成できたはず) コンボボックスの背景色(BackColor?)の色を、 設定したいのですが、その方法が分かりません。 あと、フォントも設定したいです。 プログラムの作り方を教えて下さい。

  • burbe
  • お礼率35% (78/221)

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

私も、あちこち調べてみましたが、「コレだ」と言う情報は見つかりませんでした。 > コンボボックスの背景色(BackColor?)の色を、 > 設定したいのですが、その方法が分かりません。 断片的な情報から推測すると、 「サブクラス化して、 WM_CTLCOLOR、WM_CTLCOLOREDIT、WM_CTLCOLORLISTBOX、等のメッセージをキャッチしたら、 SetBkColorで背景色を指定する。」 と言う手順のようですけど・・・ #又は、「オーナードローで全部自分で描画する」か・・・ 多分、フォントの設定も同じタイミングなのでは・・・

関連するQ&A

  • VB.NET)コンボボックスの連動について

    失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ コードを書くにあたりの条件は、開発はVisual Basic 2005のVisual Basic データベースから呼び出す場合ならAccess 2003を使用(今現在は使用しないで開発しています) Access内でコンボボックスを、Excelでコンボボックスをなどはしません…今回はVBでコンボボックスを連動させたい 今回ちょっと公に出来ない箇所があり記号で伏せさせていただきますが、記号は日本語が入ります Form1でload(ロードってこれであってましたっけ?)部分に以下を記載 dim strdata as string = {"●●","●●","●●"} (すみません、あと一文あったのですがちょっと思い出せないので) それで連動するcomobox2には以下を記載 dim strdata as string = {"●●","●●"} dim i as integer select case strdata(i) case 0 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") case 1 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") となり、combobox1で最初の●●が選ばれればcombobox2のcase0を表示させるようにしたいと思っていますが上手く表示が出ません 今週中に仕上げなければいけないので昨日今日と色々調べてみたのですが、VBAやAccess・Excel関係が殆どでVBのが見つからずAccessやExcelのを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします

  • VB2008でコンボボックスのクリアについて

    VB2008でコンボボックスのクリアについて お世話になります。 コンボの設定を With ComboBox1 .Items.Clear() .Items.Add("a") .Items.Add("b") .SelectedIndex = 0 End With のようにしていた場合 ComboBox1.Items.Clear()を実行しても "a"の値がコンボに残るみたいなのですが、 指定の方法が悪いのでしょうか? .SelectedIndex = 0を指定しないと クリアされるみたいなのですが。 よろしくお願いいたします。

  • エクセルのシートにコンボボックスを配置しようとしています。

    エクセルのシートにコンボボックスを配置しようとしています。 コントロールツールボックスのコンボボックスは、見た目があまりよくないところが 気になります。 ドロップダウンのボタンのデザインが角ばってることや シートのフォントと同一のフォントに設定してもちょっと違う(なぜ?)とこなど、 気にいりません。 フォームのコントロールは名前が変更できず、VBの関数がドロップ1_Change()などとなるため、 後に管理しづらそうで心配しています。 コントロールツールボックスのコンボボックスの見た目を改善する方法、または、 フォームのコントロールの名前を変更する方法がありましたら、 教えてください!!

  • vb.net grapecityのコンボボックス

    grapecityのコンボボックスを使用しています。 コンボボックスの背景色に画像を設定し、文字の前景色には黒を設定しています。 そこで、コンボボックスの値を変更した時、選択された値がセットされるのですが、 この時(active状態の時)、文字の色が白になってしまいます。 画面の別のところをクリックすると(値の確定?)黒色に変わります。 選択されたときに、文字色を黒色にするにはどうすればよいでしょうか? 選択後、カーソルを移動させる方法でもかまいません。 最近vb.netをはじめたばかりなので、コーディング方法を教えていただければ うれしいです。よろしくお願いします。

  • VB.NET2003のDataGridでコンボボックス

    こんにちは。 最近VB.NET(2003)を始めたばかりの初心者です。 DataGridにコンボボックスを作成する方法を探してまして、 http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html に書いてあるようにDataGridTextBoxColumnクラスからの派生クラスを作成して呼び出してみました。 そうしたところ、コンボボックスが表示され、データのセットもきちんとできました。 しかし、そのコンボボックスで選択している値を取得する方法がわからなく困ってます。 たとえば Dim comboSorce As New DataTable("ComboBox") comboSorce.Columns.Add("DisplayMember", GetType(String)) comboSorce.Columns.Add("ValueMember", GetType(Integer)) comboSorce.Rows.Add(New Object() {"OK", 0}) comboSorce.Rows.Add(New Object() {"NG", 1}) というデータをコンボボックスにセットした場合 OK,NGという表示上の値は CStr(DataGrid1(row,col)) で取得できますが、実際の値を取得する方法がわかりません。 ご存知の方いらっしゃいましたら、ご教授ください。 それと、行毎に違う値(リストデータ)のコンボボックスを作成することはできますでしょうか? 以上です。よろしくお願いします。

  • DBカラムをコンボボックスに設定する方法

    VB初心者ですみませんが、どなたか教えてください。 以下のようにADOにてDBのカラムからデータを取得し、コンボボックスに設定をしたいのですが、よくわかりません。 コンボボックスのはじめに空白→DBの項目を設定→最後に”なし”を設定したいのですが、教えてください。 Dim adors As New ADODB.Recordset adors.Open "SELECT A_FIELD FROM TABLE",・・・・ If adors.RecordCount <> 0 Then ComboBOX.AddItem ("") 'コンボボックスのはじめに空白を設定 Set ComboBOX.RowSource = adors ComboBOX.MatchEntry = dblExtendedMatching ComboBOX.ListField = "A_FIELD" ComboBOX.AddItem ("なし") 'コンボボックスの終わりにに’なし’を設定 End If

  • コンボボックスのイベントについて

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション いつもこの場にお世話になっております。 今回もよろしくお願い致します。 現在、Windowsアプリケーションを作成しており、フォームにはコンボボックスとテキストが貼り付けてあります。コンボボックスは配列になっています。 using System.Windows.Forms; public class Form1 : System.Windows.Forms.Form { 省略   private ComboBox[] cmbArray = new ComboBox[3]; } private void Form_Load(object sender, System.EventArgs e) // フォームロード {   cmbArray[0] = comboBox1;   cmbArray[1] = comboBox2;   cmbArray[2] = comboBox3; } // イベントハンドラの登録 for( int i=0 ; i<3 ; i++) {   cmbArray[i].Validated += new System.EventHandler(ComboBoxClick); } private void ComboBoxClick(object sender, System.EventArgs e) {   MessageBox.Show(((ComboBox)sender).Text); } プログラムは上記のようになっています。 ここで質問なのですが、コンボボックス内のアイテムが変更されたらすぐに発生するイベントは何なのでしょうか?ここではClickイベントを使用していますが、コンボボックス内のアイテムを変更し、そのコンボボックスからカーソルが別のコントロールに移動して初めて発生します。 いろいろとイベントを試したのですが、どれもカーソルが移動する際に発生しているようなのです。 コンボボックス内のアイテムが変更されたらすぐに発生するイベントはあるのでしょうか?どなたかご存知の方がおりましたら、どうかご教授願います。

  • コンボボックスのSelectedIndex

    お世話になっております VB.NET 2010 Windows7 Windowsフォーム画面の開発をしています コンボボックスについて質問です コンボボックスに値を追加するときに、 ComboBox.Add("あいうえお") だと、Valueが設定されません なので ComboBox.DataSource = dtcpyCombo.Copy 'dtcpyCombo は、コンボボックス用DataTable ComboBox.ValueMember = dtCombo.Columns(0).ColumnName '0番目はKEY ComboBox.DisplayMember = dtCombo.Columns(2).ColumnName '2番目はKEY & ":" & VALUE dtcpyCombo.Dispose() としたのですが、ValueMemberを設定する部分で、SelectedIndexイベントが動いてしまいます 今回のコンボボックスは特殊操作をするので、特殊動作を入れています (http://blog.goo.ne.jp/jjskapibara/e/94a967a61d39f5e03521dfe839418e62) もともとの仕様なのか、上記操作を入れたために起きているのかがわかりません 教えていただけると嬉しいです

  • キューとコンボボックスの使い方  VB2008

    VB2008を使っています。 キューとコンボボックスの使い方がわからないのですが、以下のソースで (1)キューとデータソースを使う。 Dim queue As Queue = New Queue(20) For i As Integer = 0 to 9 queue.Enqueue( i.ToString() ) Next i ComboBox1.DataSource = queue.ToArray ComboBox2.DataSource = queue.ToArray (2)べたな方法 ComboBox1.Items.Clear() For i As Integer = 0 to 9 ComboBox1.Items.Add( i.ToString() ) Next i ComboBox2.Items.Clear() For i As Integer = 0 to 9 ComboBox2.Items.Add( i.ToString() ) Next i ------------------------ (1) (1)と(2)は厳密にどのように違うのでしょうか? (2) (1)で心配なのは、キューの上限を20にしていて、実際使っているのは10個で後は空です。 この状態で、コンボボックスのDataSourceにセットした場合、(2)と同じように10件だけになっているのでしょうか? (3) (1)は同じキューを使いまわしています。コンボボックス1と2は独立して使えるのでしょうか?(データは同じです。)

  • VB6のコンボボックスのテキストプロパティ

    VB6のコンボボックスのテキストプロパティですが、 Combo1.text="test"と入れてもコンボボックスにtestと表示されません。 Form_Loadモジュールに記載するとtestと表示されるのですが、 最初testと表示されていて、コンボボックスの候補を一つ選んで、 今の設定ではその候補は使用できないので、初期状態のtestという表示に戻したいのですが、 testに戻りません。

専門家に質問してみよう