Delphi TListBox OnClick / OnChange?

2024-04-07

使用 TListBox 获得“OnChange”类型的功能是否有技巧?我可以对组件进行子类化并添加属性等,然后仅在索引更改时执行 OnClick 代码...我还可以使用表单级别变量来破解它以存储当前索引,但只是想知道我是否忽略了之前明显的内容我选择一种方式或另一种方式。


除了自己实现之外,似乎没有其他办法了。您需要的是记住当前选择的项目,并且每当ItemIndex http://docwiki.embarcadero.com/Libraries/en/Vcl.Controls.TCustomListControl.ItemIndex属性从代码中更改或每当控件收到LBN_SELCHANGE http://msdn.microsoft.com/en-us/library/windows/desktop/bb775161%28v=vs.85%29.aspx通知(当前触发OnClick http://docwiki.embarcadero.com/Libraries/en/Vcl.Controls.TControl.OnClick事件),您将比较您存储的项目索引与当前选择的项目索引,如果它们不同,则触发您自己的项目索引OnChange事件。在插入类的代码中,它可能是:

type
  TListBox = class(StdCtrls.TListBox)
  private
    FItemIndex: Integer;
    FOnChange: TNotifyEvent;
    procedure CNCommand(var AMessage: TWMCommand); message CN_COMMAND;
  protected
    procedure Change; virtual;
    procedure SetItemIndex(const Value: Integer); override;
  published
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

implementation

{ TListBox }

procedure TListBox.Change;
begin
  if Assigned(FOnChange) then
    FOnChange(Self);
end;

procedure TListBox.CNCommand(var AMessage: TWMCommand);
begin
  inherited;
  if (AMessage.NotifyCode = LBN_SELCHANGE) and (FItemIndex <> ItemIndex) then
  begin
    FItemIndex := ItemIndex;
    Change;
  end;
end;

procedure TListBox.SetItemIndex(const Value: Integer);
begin
  inherited;
  if FItemIndex <> ItemIndex then
  begin
    FItemIndex := ItemIndex;
    Change;
  end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi TListBox OnClick / OnChange? 的相关文章

随机推荐

  • 没有静态方法dispatchUnhandledKeyEventPre

    每当我按下后退按钮或菜单按钮时 我的应用程序就会崩溃 我正在使用 androidx 和 kotlin 下面是我的日志猫 07 06 18 47 25 538 22303 22303 com mnkafe mnkafe E InputEven
  • 如何获取其键与给定正则表达式匹配的哈希元素?

    如何获取其键与给定正则表达式匹配的哈希元素 不使用任何模块 例如 Tie Regexp Hash 如何实现这一目标 s as2 queen gt 1 as1 queen gt 2 my regex qr queen if s regex p
  • 带分号的元刷新

    我在网址中使用分号作为查询字符串分隔符 而不是和 我的问题是 当我尝试对查询字符串中带有分号的 url 进行元刷新时 它会将其转换为 253b 因此 转发时 我无法读取查询字符串参数 因为分隔符不再存在 例子 http domain com
  • 使用 facebook graph api 获取 Instagram 自己的/自我提要

    我对使用 Instagram API Graph API 很陌生 但找不到问题的答案 由于 Instagram API 已被弃用 现在我们必须处理 instagram facebook graph API 我知道新程序 https deve
  • 读取 csv 文件并使用 php 创建另一个 csv 文件

    我有一个 csv文件 当我通过记事本打开它时 它看起来像 ID501501503502 当我通过 php 在浏览器中打印它时 它看起来像 ID 501 501 503 502 我的代码是 handle fopen MonC1 csv r d
  • ASP.NET Core DbContext 注入

    我有一个ConfigurationDbContext我正在尝试使用 它有多个参数 DbContextOptions and ConfigurationStoreOptions 如何将此 DbContext 添加到 ASP NET Core
  • getDrawingCache 未更新

    我在 onDraw 函数中调用 getDrawingCache 问题是它仅在第一次包含对画布的更改 此后 它根本不会随着新更改而更新 这是我的代码 paintAction draw canvas if paintAction isPerma
  • SLF4J 最佳实践

    我正在编写一个库 并使用 sfl4j 来处理日志记录 我认为只要每个机构都可以提供自己的实现 那么我的应用程序提供的日志将得到正确处理 这是个好主意 但我不知道是否必须提供实现作为传递依赖项 示例 如果我只提供
  • ListView 的 EditItemTemplate 内的 AsyncFileUpload

    我在处理时遇到问题AsyncFileUpload控制在一个EditItemTemplate in a ListView 我如何引用AsyncFileUpload处理时控制OnUploadedComplete代码隐藏文件中的事件 我知道我可以
  • 电源查询循环

    我使用 Power Query 提取了过去一个月测试的所有独特项目类型 let Source Sql Database XXX YYY dbo tblTest Source Schema dbo Item tblTest Data Filt
  • OSX 中有类似 UIActivityViewController 的东西吗?

    我正在将应用程序从 iOS 迁移到 OSX OSX 中是否有与 UIActivityViewController 等效的东西 对于 Facebook Twitter 邮件 消息共享之类的东西 我需要做类似的事情 NSArray activi
  • FCM - 获取消息标签

    要从 FCM 后端发送消息 我们有以下视图 我想得到消息标签 消息诽谤 from RemoteMessage 当我调试该字段时 消息中的内容被标记为google c a c l 我认为这是一个内部字段 首先 我只是想知道和你的问题一样 但读
  • inputFormatter 应该只允许小数和负数

    我想允许用户只添加数字 12345 和十进制数字 如 21321 12312 和负数 如 23423 32432 用户不应该能够添加多个 比如 12 32 并在第一个输入中添加 比如 324 34 而不是324 4323 我用了这个正则表达
  • 如何重置 Azure 上的 Kudu 缓存部署

    我之前在 Azure Web App 上有一个 Node 应用程序 现在是一个 Go 应用程序 问题是当我部署时我从 Kudu 得到这个 Using cached version of deployment script command a
  • Android AdMob SDK - 请求新广告返回相同的广告

    我在主活动中有一个 AdView 其 requestInterval 设置为 推荐 20 秒 问题是广告似乎永远不会改变 我知道当我在 AdListener 上收到对 onReceiveRefreshedAd 的回调时 就会发生刷新 此外
  • Android 在我自己的应用程序中以编程方式隐藏鼠标指针

    我知道这里有一个类似的问题 以编程方式在 Android 屏幕上移动鼠标指针 https stackoverflow com questions 7695258 moving mouse pointer on android screen
  • Firebase - 缺少 Api 密钥

    我正在使用 Google 的 Firebase 数据库 我已经注册到 Firebase 控制台并下载了 JSON 文件 但由于某种原因它给了我这种错误 错误 任务 app processDebugGoogleServices 执行失败 缺少
  • apns Sharp 中的 iPhone 证书错误 对 SSPI 的调用失败

    我有一个托管在 azure 中的数据服务 我从该服务向 iphone 发送通知 但在与 apns 建立连接时出现以下错误 对 SSPI 的调用失败 收到的消息是意外的或格式错误 我还参考了以下链接来解决相同的错误 但仍然收到错误 苹果通过
  • Grails JSON 数组

    我正在将 Foo 对象列表转换为 JSON 字符串 我需要将 JSON 字符串解析回 Foos 列表 但是在下面的示例中 解析为我提供了 JSONObjects 列表而不是 Foos Example List list new Foo fi
  • Delphi TListBox OnClick / OnChange?

    使用 TListBox 获得 OnChange 类型的功能是否有技巧 我可以对组件进行子类化并添加属性等 然后仅在索引更改时执行 OnClick 代码 我还可以使用表单级别变量来破解它以存储当前索引 但只是想知道我是否忽略了之前明显的内容我