コンボボックスのリストの背景色を統一するには?


ゆきっぺ  2004-11-01 08:45:09  No: 117297

コンボボックスでキーボードから不正な値を入力した場合、Changeイベントで背景色を赤色に設定しています。
コンボボックスのプルダウンをクリックしリストを表示したまま、
不正な値を入力した場合、コンボボックスの入力フィールドのみ背景色が赤色になりリストは赤色になりません。しかし、リストを一度閉じ、再度プルダウンをクリックし、リスト再表示するとリストは赤色になっているのです。
  不正な値を入力した場合は、常に入力フィールドだけでなく、リストもすべて赤色にしたいのですが、どなたかご存知の方いらっしゃいませんか?
とても困っています。よろしくお願いします。


ガッ  2004-11-01 18:34:06  No: 117298

十分くらいで発見してつくってみたんだが…
かなり強引、もっとスマートなやり方があるとおもわれる。

メモ帳でfrmファイル作って、まんまコピペで動くと思われ。
[VB6]

VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3195
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3195
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows の既定値
   Begin VB.ComboBox Combo1 
      Height          =   300
      Left            =   360
      TabIndex        =   0
      Text            =   "Combo1"
      Top             =   1200
      Width           =   2895
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_SHOWDROPDOWN = &H14F&

Private Sub Combo1_Change()
    If Combo1.Text = "abc" Then
        Combo1.BackColor = &HFF
        SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 0, 0
        SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 1, 0
    Else
        Combo1.BackColor = &HFFFFFF
    End If
End Sub

Private Sub Form_Load()
    Dim i As Long
    For i = 1 To 10
        Combo1.AddItem i
    Next
End Sub


ガッ  2004-11-01 18:34:39  No: 117299

忘れてた…不正な値は abc だった(orz


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加