VB初心者です。(WindowsXP/VB6.0)
テキストボックスにオートコンプリート機能を実装させたいと思っています。
いろいろ調べたのですが、Shlwapi.dllを利用したURLのケースと
CB_FINDSTRINGを利用したケースがありました。
CB_FINDSTRINGはボックス内でオートコンプリートを実現するようなので、Shlwapiのように入力単位で候補を下部に表示するようなインターフェース
がよいと思っているのですが、URL履歴ではなく独自のデータを使用して
実装することはできないのでしょうか?
<サンプル>
Declare Function SHAutoComplete Lib "Shlwapi.dll" _
(ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Public Const SHACF_URLHISTORY = &H2
Public Const SHACF_URLMRU = &H4
Public Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Sub Form_Load()
Dim lRtn As Long
lRtn = SHAutoComplete( Text1.hWnd, SHACF_URLALL)
End Sub
以上、よろしくお願いします。
IAutoComplete、IEnumStringインターフェースについて調べてください。
# IEnumStringをImplementsする必要があります。
K.J.K.さん。助言ありがとうございます。
いろいろ調べたのですが、下記サイトに詳細がありました。
http://www.runan.net/program/tips/sdk_17_IAutoComplete.shtml
しかし、残念ながら自分が初心者であること、C++の知識はないこと
などなどが原因でうまく活用ができませんでした。
本件はVB(初級レベル)だけの知識では実現できないのでしょうか?
「できるかできないか」は、やってみなければわからないのでは。
そもそも、私が提示した方法以外もありえるでしょうし。
独自にポップアップウィンドウを作成して、そこで選択肢を
表示する、というのを直接自分で実装してもいいのですし。
上記のページのサンプルと同様のインターフェースを実現したい場合は
VBだけで実現できますか?
ちなみにC++は知識だけでなくソフトウェアもないのですが・・・。
COMについての知識があれば、VB6のみで実装は可能です。
VB6のCDに入っているMkTypLin.exeを使ってタイプライブラリを
作成すれば多少は楽になりますが、必須ではありませんし。
とりあえずサンプル。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/AutCmp01.lzh
TextBoxが空白のときに上矢印(↑)か下矢印(↓)キーを押せば、
都道府県の一覧のリストが表示されると思います。
K.J.K.さん
サンプルのご提供ありがとうございました。
完成はしていませんが、頂いたサンプルをもとに
いろいろやってみたいと思います。
初心者にお付き合い頂きありがとうございました。
また何かあったらご助言お願い致します。
ツイート | ![]() |