2012-04-14 56 views
3

當用戶按下Ctrl + End時,VirtualStringTree會垂直跳轉到結尾,這很好,但也是水平的。我不希望它水平地結束。水平滾動應該保持原樣。Ctrl +結束行爲TVirtualStringTree

如何判斷?

謝謝。

回答

4

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; 
+1

您是否還想選擇節點?默認行爲(我有VirtualTreeView v.5.0.0,但我認爲它與舊版本相同)僅滾動到內容的視圖中,它不會選擇第一個或最後一個節點以及此處發佈的代碼。而且,如果你有一些,你想滾動到第一列嗎? – TLama 2012-04-14 09:12:44

+2

好吧,似乎你不想;-) – TLama 2012-04-14 09:26:50

+2

我通過使用重載的ScrollIntoView函數做了兩個。我明白了。謝謝 :) – 2012-04-14 18:07:37