コンボドロップを発生させる
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下に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 |