gpt4 book ai didi

delphi - 如何在TListView.OnColumnDragged中找到哪一列被拖动?

转载 作者:行者123 更新时间:2023-12-02 02:43:01 29 4
gpt4 key购买 nike

TListView

OnColumnDragged 事件有一个简单的 TNotifyEvent 类型,因此没有直接的方法可以找到哪一列实际被拖到了 View 中。新的位置。

如何找到哪一列被拖动了?

最佳答案

借助插入类,您可能会发现 HDN_ENDDRAG通知代码在 WM_NOTIFY消息处理程序。

HDN_ENDDRAG通知在 lParam 参数中返回NMHEADER包含有关被拖动的标题项的信息的结构。这是代码示例;您可以关注commented version以及该帖子的内容:

uses
ComCtrls, CommCtrl;

type
TListView = class(ComCtrls.TListView)
private
procedure WMNotify(var AMessage: TWMNotify); message WM_NOTIFY;
end;

implementation

{ TListView }

procedure TListView.WMNotify(var AMessage: TWMNotify);
var
HeaderHandle: HWND;
begin
inherited;
if (AMessage.NMHdr^.code = HDN_ENDDRAG) then
begin
HeaderHandle := ListView_GetHeader(Handle);
if (AMessage.NMHdr^.hWndFrom = HeaderHandle) then
ShowMessage(
'The header with index ' +
IntToStr(TWMNotifyHC(AMessage).HDNotify^.Item) + ' ' +
'has been dragged to the position with index ' +
IntToStr(TWMNotifyHC(AMessage).HDNotify^.PItem^.iOrder) + '. ' +
'Columns are not updated yet!');
end;
end;

关于delphi - 如何在TListView.OnColumnDragged中找到哪一列被拖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775555/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com