コンボドロップを発生させる

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

'コンボドロップ中に
'上下キーを押したとき
'Clickイベントが発生するので
'それを回避するモジュール変数です
Dim m_CmdDropped As Boolean

'指定したテキストボックス下に
'コンボドロップします
Sub MyTextDrop(objCombo As ComboBox, objText As TextBox, Optional ByVal Y As Single)
    Dim sngY As Single
    
    On Error Resume Next
    
    'Y位置調整用の変数です
    sngY = Screen.TwipsPerPixelX * Y
    
    'コンボのフォントと
    '位置をテキストボックスに合わせます
    Set objCombo.Font = objText.Font
    objCombo.Move objText.Left, objText.Top + sngY
    
    'テキストボックスに入力されている単語が
    'コンボに入っているときはコンボリストを選択します
    objCombo.SetFocus
    objCombo.SelText = objText.Text
    
    'コンボドロップします
    modComboDrop.ComboDrop objCombo
    
End Sub

'# Combo1
'コンボでクリックしました
Private Sub Combo1_Click()
    '改行キーと
    'マウスクリック時に呼び出されます
    
    'コンボの選択中のアイテムを
    'テキストボックスに移します
    Text1.Text = Combo1.Text
    '選択済みであれば解除します
    If m_CmdDropped = True Then
        m_CmdDropped = False
    Else
        Text1.SetFocus
    End If
End Sub

'# Combo1
'コンボでキーを押しました
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
    '上下キーであるか調べます
    If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
        '選択中のフラグを立てます
        m_CmdDropped = True
    End If
End Sub

'# Combo1
'コンボでキーを入力しました
Private Sub Combo1_KeyPress(KeyAscii As Integer)
    '改行キーを入力しました
    If KeyAscii = vbKeyReturn Then
        'クリックイベントと同じことをします
        Combo1_Click
    End If
End Sub

'# Text1
'テキストボックスでキーを押しました
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    '↓キーのみ処理します
    If KeyCode = vbKeyDown Then
        '↓キーの実行をキャンセルします
        KeyCode = 0
        
        'コンボドロップします
        MyTextDrop Combo1, Text1
        
    End If
End Sub

'# Form1
'フォームをロードしました
Private Sub Form_Load()
    
    '初期設定をします
    With Combo1
        'テキストボックスとコンボを同じ設定にします
        Set Combo1.Font = Text1.Font
        .Move Text1.Left, Text1.Top - 2
        Text1.Width = Combo1.Width
        Text1.Height = Combo1.Height
        
        'サラダの材料を追加します
        .AddItem "ニンジン"
        .AddItem "レタス"
        .AddItem "キュウリ"
        .AddItem "トマト"
        .AddItem "アスパラガス"
        .AddItem "ゆでたまご"
        .AddItem "マヨネーズ"
        .AddItem "ツナ"
        .AddItem "ドレッシング"
        
        'テキストボックスの後ろに隠れているコンボに
        'TABキーを押してフォーカスが移るのを防ぎます
        .TabStop = False
        
    End With
End Sub



<戻る

Sample94.lzh


http://hp.vector.co.jp/authors/VA015521/