オートコンプリートを実装するには?

解決


JULIO  2005-05-03 02:32:12  No: 89678

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

以上、よろしくお願いします。


K.J.K.  2005-05-03 04:53:46  No: 89679

IAutoComplete、IEnumStringインターフェースについて調べてください。
# IEnumStringをImplementsする必要があります。


JULIO  2005-05-03 10:44:00  No: 89680

K.J.K.さん。助言ありがとうございます。
いろいろ調べたのですが、下記サイトに詳細がありました。
http://www.runan.net/program/tips/sdk_17_IAutoComplete.shtml
しかし、残念ながら自分が初心者であること、C++の知識はないこと
などなどが原因でうまく活用ができませんでした。
本件はVB(初級レベル)だけの知識では実現できないのでしょうか?


K.J.K.  2005-05-03 22:31:29  No: 89681

「できるかできないか」は、やってみなければわからないのでは。


K.J.K.  2005-05-03 22:33:14  No: 89682

そもそも、私が提示した方法以外もありえるでしょうし。
独自にポップアップウィンドウを作成して、そこで選択肢を
表示する、というのを直接自分で実装してもいいのですし。


JULIO  2005-05-03 23:45:34  No: 89683

上記のページのサンプルと同様のインターフェースを実現したい場合は
VBだけで実現できますか?
ちなみにC++は知識だけでなくソフトウェアもないのですが・・・。


K.J.K.  2005-05-04 00:45:09  No: 89684

COMについての知識があれば、VB6のみで実装は可能です。
VB6のCDに入っているMkTypLin.exeを使ってタイプライブラリを
作成すれば多少は楽になりますが、必須ではありませんし。


K.J.K.  2005-05-04 10:23:21  No: 89685

とりあえずサンプル。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/AutCmp01.lzh
TextBoxが空白のときに上矢印(↑)か下矢印(↓)キーを押せば、
都道府県の一覧のリストが表示されると思います。


JULIO  2005-05-04 19:53:09  No: 89686

K.J.K.さん
サンプルのご提供ありがとうございました。
完成はしていませんが、頂いたサンプルをもとに
いろいろやってみたいと思います。
初心者にお付き合い頂きありがとうございました。
また何かあったらご助言お願い致します。


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

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






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