- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
祝大家有美好的一天!
我有一些问题。当我为所选节点的父节点调用 AlphaSort 时(所选节点目前不可见,因为我已向下或向上滚动 TreeView ), TreeView 滚动到所选节点(如调用 MakeVisible)。如何禁止 TreeView 以确保排序期间可见?我尝试像这样拦截 TVM_ENSUREVISIBLE
type
TTreeNode = class(ComCtrls.TTreeNode)
protected
procedure EnsureVisible(var Message: TMessage); message TVM_ENSUREVISIBLE;
end;
type
TTreeView = class(ComCtrls.TTreeView)
protected
procedure EnsureVisible(var Message: TMessage); message TVM_ENSUREVISIBLE;
end;
...
{ TTreeView }
procedure TTreeView.EnsureVisible(var Message: TMessage);
begin
inherited;
ShowMessage('MakeVisibleFromTreeView');
end;
{ TTreeNode }
procedure TTreeNode.EnsureVisible(var Message: TMessage);
begin
inherited;
ShowMessage('MakeVisibleFromTreeNode');
end;
但是滚动排序时没有调用该消息。仅当我手动调用 MakeVisible 时。
最佳答案
您观察到的行为是由基础 TreeView 控件提供的。您可能无能为力来阻止这种情况发生。因此,如果您想改变这种行为,您需要解决这种行为。
你必须决定你真正想要什么行为。排序完成后您希望哪些节点可见。 @TLama 建议存储滚动条位置、排序,然后恢复滚动条位置。但这可能会产生相当令人惊讶的结果。首先,不能保证排序前可见的任何节点在排序后也可见。如果您要排序的节点有子节点,这也可能会加剧奇怪的情况。
但是,您在评论中说正在排序的节点没有子节点。在这种情况下,我认为@TLama 的建议将满足您的需求。有一个相当简单的方法可以实现它。您需要在排序之前记住顶部项目的索引,然后在排序之后将顶部项目设置为具有该索引的项目。像这样:
TreeView1.Items.BeginUpdate;
try
TopIndex := TreeView1.TopItem.Index;
TreeView1.AlphaSort; // or whatever you do to perform the sort
TreeView1.TopItem := TreeView1.Items[TopIndex];
finally
TreeView1.Items.EndUpdate;
end;
关于delphi - TTreeView : AlphaSort scrolls to selected node (like MakeVisible),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20605321/
我正在为我的一个 C 程序使用 scandir() 函数。在 scandir() 中,我要求它对我的目录进行 alpha 排序。然而,当我有诸如 alpha、bob 之类的文件时,它们会被放置在 DA
我正在尝试使用 scandir打印当前目录中的文件列表。当我尝试编译时,收到以下错误和警告: warning: implicit declaration of function ‘scandir’ [
祝大家有美好的一天! 我有一些问题。当我为所选节点的父节点调用 AlphaSort 时(所选节点目前不可见,因为我已向下或向上滚动 TreeView ), TreeView 滚动到所选节点(如调用 M
我是一名优秀的程序员,十分优秀!