You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++Builder中TAutoComplete类获取及IAutoComplete2集成咨询

C++Builder相关控件问题解答

一、TButtonedEdit的IAutoComplete2支持实现

不需要额外下载第三方TAutoComplete类,直接调用Windows系统原生的COM接口就能实现:

  • 首先在工程中配置依赖:包含头文件#include <shldisp.h>,并在链接选项中加入shlwapi.lib。
  • 给TButtonedEdit添加自动完成的核心代码示例:
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        IAutoComplete2* pAutoComplete = nullptr;
        HRESULT hr = CoCreateInstance(CLSID_AutoComplete, nullptr, CLSCTX_INPROC_SERVER, IID_IAutoComplete2, (void**)&pAutoComplete);
        
        if (SUCCEEDED(hr))
        {
            // 绑定到TButtonedEdit的窗口句柄
            hr = pAutoComplete->Init(ButtonedEdit1->Handle, nullptr, nullptr, nullptr);
            if (SUCCEEDED(hr))
            {
                // 设置自动完成行为:启用建议+自动补全
                pAutoComplete->SetOptions(ACO_AUTOSUGGEST | ACO_AUTOAPPEND);
            }
            pAutoComplete->Release();
        }
    }
    
  • 如果需要自定义候选内容,实现IAutoCompleteSource接口,将其指针替换Init方法的第二个参数即可。

二、C++Builder内置的编辑控件历史记录方案

C++Builder有现成的实现方式:

  • 直接使用TComboBox:将其Style设为csDropDown,表现和编辑框一致,同时Items属性可直接保存输入历史,开启AutoComplete相关属性就能自动匹配历史内容。
  • 若坚持用TButtonedEdit,可搭配TStringList手动维护历史:在控件的OnExit事件中把当前非空文本添加到列表(注意去重),再将这个列表作为自动完成数据源绑定到IAutoComplete2接口。

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:19:54