Google 喜欢 Delphi 的编辑/组合控件吗?

2024-03-21

每个人可能都知道我的意思,但要澄清控制需要:

  • 当用户编辑文本时触发事件。该事件将提供一个 SuggestionList:TStrings,您可以在其中填充匹配/建议。
  • 如果 SuggestionList 不为空,则会出现一个下拉菜单。
  • 与组合不同,控件不应尝试自动选择/自动完成或以其他方式影响编辑。

那么,是否有一个 Delphi 编辑/组合控件可以像这样工作呢?


Use the 自动完成功能 http://msdn.microsoft.com/en-us/library/bb776292.aspx内置于所有 Windows 编辑控件中。

首先,填写您的TStrings随心所欲地反对。然后使用GetOleStrings http://docwiki.embarcadero.com/VCL/en/AxCtrls.GetOleStrings创建一个TStringsAdapter http://docwiki.embarcadero.com/VCL/en/AxCtrls.TStringsAdapter来包裹它。 (适配器不主张所有权TStrings对象,因此您必须确保在适配器仍处于活动状态时不会破坏它。)适配器为您提供了一个IStrings接口,您需要它,因为自动完成功能需要一个IEnumString http://msdn.microsoft.com/en-us/library/ms687257.aspx提供完成匹配的接口。称呼_NewEnum http://docwiki.embarcadero.com/VCL/en/AxCtrls.TStringsAdapter._NewEnum为了那个原因。

接下来,致电CoCreateInstance http://msdn.microsoft.com/en-us/library/ms686615.aspx创建一个IAutoComplete http://msdn.microsoft.com/en-us/library/bb776292.aspx目的。称其为Init http://msdn.microsoft.com/en-us/library/bb776293.aspx方法将其与编辑控件的窗口句柄关联起来。如果您使用的是组合框,请发送cbem_GetEditControl http://msdn.microsoft.com/en-us/library/bb775772.aspx消息查找底层编辑窗口。

您可以在此时停止,自动完成功能应该会自动运行。如果需要,您可以禁用自动完成,也可以设置任意数量的自动完成选项 http://msdn.microsoft.com/en-us/library/bb762479.aspx.

你说你不想要自动完成,但在操作系统术语中,我认为你真正不想要的叫做自动追加,其中字符串的其余部分会在用户键入时自动输入到编辑框中,但会被选中,以便进一步键入将覆盖它,并且如果所需的值短于其中一个匹配项,则用户需要删除多余的文本。

还有自动建议,它显示建议的下拉列表。

您可以启用其中一个或两个选项。您不需要自己过滤建议列表;自动完成对象过滤IEnumString单独列出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 喜欢 Delphi 的编辑/组合控件吗? 的相关文章

  • 每次 TDbGrid 的选定位置更改时都会触发什么事件?

    我的项目中有一个 TDbGrid 每次更改所选行时我都试图触发一个事件 行中的任何更改都已经更新了链接到同一数据源的所有数据感知控件 但还需要进行其他更改 我需要一个事件处理程序 我认为 OnColEnter 会起作用 根据帮助文件 它在以
  • 为什么 {$ifopt FINITEFLOAT ON} 无法编译?

    我有这样的构造 ifopt FINITEFLOAT ON message FINITEFLOAT option ON else message FINITEFLOAT option OFF endif 在我的源代码中 它不会编译 这一定是一
  • 将数据从一个数据集结构移动到另一个数据集结构的更快方法(在 TDatasetProvider 中)

    我有一个自定义的 TDatasetProvider 它允许为其提供的任何数据创建新字段 因此 假设您在原始数据集上获得了以下字段 客户ID Name Age 您需要使用显示位图在 DBGrid 上选择它 好吧 你可以 因为我的 DSP 可以
  • 如何从 VCL.Graphics 获取所有已注册的文件格式...但 64 位

    在我的 32 位应用程序中 我使用FindRegisteredPictureFileFormats 单元由 Cosmin Prund 提供 https stackoverflow com a 14677532 505088 gt 如何从图形
  • 如何将纹理传递给 DirectX 9 像素着色器?

    我有像素着色器 fxc exe tiles fs T ps 3 0 Fotiles fsc Fctiles fsl struct PSInput float4 Pos TEXCOORD0 float3 Normal TEXCOORD1 fl
  • NHibernate 对象 ID 返回不正确的值

    我正在使用 NHibernate 这不是家庭作业 假设我检索了一个类型的对象Faculty 假设 XYZ 大学工程学院 来自数据库 它有 5 个与其类型关联的子对象Department根据数据库表 应包含 ID 2 4 5 8 和 9 我的
  • 将 [字节数组] 分配给没有 Unicode 转换的 Variant

    考虑以下代码片段 在 Delphi XE2 中 function PrepData StrVal string Base64Val AnsiString OleVariant begin Result VarArrayCreate 0 1
  • Delphi 将面板流传输至文件

    今天我有一个关于将表单的一部分流式传输到文件的问题 在此示例中 我使用 Tmemo 而不是文件来查看流 这是我的表格 表单右上角的面板有一些控件 如标签 编辑等 使用 保存面板 按钮将面板保存在 TStream 上 这里是代码 proced
  • Windows Phone 8.1 ComboBox 在项目数量较多时显示多个项目

    当组合框中有更多项目时 组合框将显示列表选择器弹出按钮 如果我选择第一个并向下滚动 则多个项目将显示为选定的 但 ComboBox 的 SelectedItem 将是我选择的项目 我修改了ListPickerFlyout的样式 并关闭了Li
  • 如何在 Ext.js 中自动完成 html 输入标签?

    如果您使用 Ext js 库 如何在输入文本区域中进行自动完成 更准确地说 如何根据迭代 Ajax 请求进行自动完成 例如jQuery 自动完成插件 http docs jquery com Plugins AutoComplete aut
  • 读取存储在注册表中的 GUID 值

    我尝试读取存储为的 GUID 值binaryDelphi 注册表中的值 当我用BintoHex读取它时 但结果是相反的 看来我必须交换字节 但我认为 BinToHex 可以做到 我参考了这个线程 但找不到正确的解决方案 如何在 Delphi
  • 无法使用 Indy 从 Gmail 获取电子邮件

    I use TIdPOP3很多 而且效果很好 除了 GMail 帐户 不知怎的 它永远不起作用 我尝试了不同的组合和端口 无论是否使用 SSL 它总是返回不同的错误 我最近的尝试是在 Gmail 上创建 应用程序特定 密码 并尝试使用此密码
  • Delphi TTask - PPL 中匿名函数中的变量捕获如何工作?

    我开始深入研究 Delphi D11 PPL 并编写了这个小例子 procedure TForm2 LaunchTasks const cmax 5 Var ltask ITask i j Integer begin for i 1 to
  • Excel VBA 组合框识别

    我的用户表单上有 4 个以上的组合框 当他们触发时 他们触发相同的事件 我想做的是找出哪个 ComboBox 触发了该事件 组合框的创建取决于组件的数量 生成组合框的代码如下所示 For j 0 To UBound ComponentLis
  • 挂钩到文件,实时读取新内容

    我如何连接到另一个程序当前正在使用的文件 该程序不断向该文件写入内容 假设有一个 10 行的文本文件 当我启动我的应用程序时 每次写入程序保存其内容时 它都必须检测并读取其中的任何内容 可以在不不断检查文件大小 日期的情况下完成此操作吗 您
  • 控制台应用程序比 GUI 应用程序运行得更快吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对编程世界比较陌生 我有几个性能问
  • 当应用程序最小化时隐藏表单

    我有一个主表单和一个状态表单 当我的应用程序中的工作正在进行时 我会显示它们 如果工作完成我就打电话Hide状态表上出现 状态表消失 当我最小化主窗体而等待窗体可见时 就会出现问题 然后两种形式都被隐藏 这就是我想要的 但是 如果工作完成时
  • Scala Eclipse 自动完成功能损坏?

    我正在尝试让自动完成功能在 Eclipse 中用于 Scala 开发 我试图从 Scala 类引用 java 类 但自动完成功能从未找到它 例如 以这个 scala 类为例 object Main def main args Array S
  • 如何使用 DSPACK 将自定义音频缓冲区注入 DirectX 过滤器图表?

    我使用 Delphi 6 和 DSPACK 来执行一些涉及音频和 DirectX 的操作 我在 输入 方面找到了将枚举的音频输入设备之一分配给 TFilter 对象并将该过滤器连接到 TSampleGrabber 对象的位置 这为我提供了将
  • 如何使用 LiveBindings 在 TStringGrid 中显示超过 200 行?

    我有一个TDataSource这是由一个支持TClientDataset绑定到一个TStringGrid 我通过右键单击网格并选择 Link to DB Datasource 然后选择数据源 这为我设置了 LiveBindings 当我运行

随机推荐

  • DRAM 访问的性能计数器

    我想找回DRAM 存取次数在我的应用程序中 准确地说 我需要区分数据和代码访问之间 该处理器是一个Intel R Core TM i7 4720HQ CPU 2 60GHz Haswell 基于英特尔软件开发人员手册 第 3 卷 https
  • 无法在生产环境中实例化模块

    我刚刚将我的程序推送到 Heroku 上 并且我测试 Angular 的页面加载了以下错误 未捕获错误 injector modulerr 无法实例化模块 diceAngularApp 原因是 错误 injector unpr 未知提供者
  • python中使用numpy数组出现内存错误

    我收到此代码的以下错误 model lda LDA n topics 15 n iter 50 random state 1 model fit X topic word model topic word print type topic
  • 尝试将 AWS DynamoDB 与 Swift 3 结合使用时出现很多错误

    我是快速开发的新手 正在尝试合并后端 我认为 AWS 将是实现我想要完成的任务的好方法 我目前只是想获取他们为您创建的示例项目文件 它有很多错误 令人难以置信 我意识到 AWS 在 Swift 2 中创建文件 因此在 Swift 3 中运行
  • 如何使输入和选择字段的宽度相等

    在表单上 我有一个选择字段和两个输入字段 这些元素垂直对齐 不幸的是 我无法获得这些元素的相同宽度 这是我的代码
  • 在 ASP.Net MVC 中设置 Access-Control-Allow-Origin - 最简单的方法

    我有一个简单的操作方法 它返回一些 json 它在 ajax example com 上运行 我需要从另一个网站 someothersite com 访问该网站 如果我尝试调用它 我会得到预期的 Origin http someothers
  • Pybind11 - 返回指向 unique_ptr 容器的指针

    我一直在使用优秀的 pybind11 库 但遇到了困难 我需要向 Python 返回一个指向不可复制对象的指针 因为该对象包含 unique ptrs 一般来说 这在使用 return value policy reference 的警告下
  • Delphi 和 NoSQL

    有人曾经将 Delphi 与 NoSQL 数据库 如 Mongo CouchDB 或其他数据库 一起使用过吗 您会推荐哪一款 对于 Mongo 有TMongoWire https github com stijnsanders TMongo
  • .NET 和 Lotus Notes 互操作

    我在某个位置有 Lotus Notes 数据库文件 nsf 比方说 http intranet mycompany com somewhere data nsf http intranet mycompany com somewhere d
  • Excel 按名称将工作表数据拆分到新的 Excel 工作簿中[重复]

    这个问题在这里已经有答案了 Model Place model23 35372 model23 35372 model54 31034 model24 31034 model54 31034 model24 31034 我有这个Excel数
  • 如何转储哈希映射的内容?

    如何转储 Java HashMap 或任何其他 的内容 例如转储到 STDOUT 举个例子 假设我有一个具有以下结构的复杂 HashMap student1 gt Map name gt Tim Scores gt Map math gt
  • 如何更改 Treeview 的背景颜色

    我来这里是想问你如何更改树视图的背景 我尝试过 ttk Style configure Treeview background 383838 它仅适用于单元格 但树视图的其余部分保持白色 我尝试更改窗口的背景和框架 但它不起作用 那么 如何
  • 如何根据python中的条件组合或保留列表中的字符串?

    我有三个清单 li1 a a a a b b a a b li2 a a a b a b a a li3 b b a a b 我想通过以下方式 切片和粘贴 元素 b 结果应该是这样的 li1 aaaa b b aa b li2 aaa b
  • 将样式应用于特定类型的所有子元素

    我想为 wpf 编写一个样式 其中 StatusBar 中的所有按钮 具有定义的样式 都具有相同的样式 例如宽度 这是我的风格 以及元素的 xaml
  • 使用java进行服务器端推送

    有没有更简单的方法cometd http cometd org作为java的长轮询框架 因为我需要的是客户端指定一些参数并将它们发送到服务器 服务器处理它们并开始连续将消息推送回客户端 看起来 就像每个服务的线程 客户端接收消息并显示它们
  • 为多个客户管理多个 git 发布分支

    我的公司有一款软件出售给多个客户 但每个客户都有一些不同的要求 不仅仅是 把我们的标志放在这里 它们的核心都是相同的 但有些不需要某些模块 有些则需要所有模块 包括修改 我想在一个 git 存储库中管理所有这些 这样我对它们都有相同的核心
  • 从paleoView导入R中的netcdf时只有正纬度和经度可能是错误的投影

    我用的是古景 https onlinelibrary wiley com doi full 10 1111 ecog 03031软件用于下载过去气候的一些变量 包括 15000BP 10000BP 的平均温度 我可以根据要求上传文件 但至少
  • Android studio 找不到:com.getbase:floatingactionbutton:1.3.0

    我正在尝试使用现有的 android 项目运行我的 gradle 文件 我对这个应用程序的唯一错误是Failed to find com getbase floatingactionbutton 1 3 0 下面是我的 gradle 文件
  • 从 Angular Material 复选框更改 CSS

    有人可以告诉我 当您单击角度材质复选框时 如何更改圆形的颜色 如下图所示 粉色圆圈 这是官方网页的链接 https material angular io components checkbox overview https materia
  • Google 喜欢 Delphi 的编辑/组合控件吗?

    每个人可能都知道我的意思 但要澄清控制需要 当用户编辑文本时触发事件 该事件将提供一个 SuggestionList TStrings 您可以在其中填充匹配 建议 如果 SuggestionList 不为空 则会出现一个下拉菜单 与组合不同