【问题标题】:Ctrl+End behavior of TVirtualStringTreeTVirtualStringTree 的 Ctrl+End 行为
【发布时间】:2012-04-26 11:37:00
【问题描述】:

当用户按下 Ctrl+End 时,VirtualStringTree 会垂直跳转到末尾,这很好,但也可以水平跳转。我不希望它水平地走到尽头。水平滚动应保持原样。

如何判断?

【问题讨论】:

    标签: delphi scroll virtualtreeview tvirtualstringtree


    【解决方案1】:

    以下代码中的OnKeyAction 处理程序检查是否按下了 CTRL + HOMECTRL + END,如果是,它会(仅垂直)滚动到顶部或底部取决于按下的内容。

    procedure TForm1.VirtualTreeKeyAction(Sender: TBaseVirtualTree;
      var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
    begin
      if (ssCtrl in Shift) then
      case CharCode of
        VK_HOME:
        begin
          DoDefault := False;
          VirtualTree.ScrollIntoView(VirtualTree.GetFirst, False);
        end;
        VK_END:
        begin
          DoDefault := False;
          VirtualTree.ScrollIntoView(VirtualTree.GetLast, False);
        end;
      end;
    end;
    

    【讨论】:

    • 是否也要选择节点?默认行为(我有 VirtualTreeView v.5.0.0,但我猜旧版本的情况相同)仅滚动查看内容,它不会选择第一个或最后一个节点以及此处发布的代码。而且,如果有的话,你想滚动到第一列吗?
    • 好吧,看来你不想这样做 ;-)
    • 我通过使用重载的 ScrollIntoView 函数做到了这两点。我明白了。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2017-09-22
    • 2017-05-04
    • 2017-06-08
    相关资源
    最近更新 更多