Ctrl +结束TVirtualStringTree的行为

时间:2012-04-14 08:15:53

标签: delphi scroll virtualtreeview tvirtualstringtree

当用户按Ctrl + End时,VirtualStringTree会垂直跳转到最后,这也很好但也是水平的。我不希望它横向走到尽头。水平滚动应保持原样。

如何辨别?

1 个答案:

答案 0 :(得分:5)

以下代码中的OnKeyAction处理程序检查是否按下 CTRL + HOME CTRL + 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;