code_junkie

Is it possible to select multiple columns in Virtual Treeview

Nov 13th, 2011
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. StartSelectedColumn: integer;
  2. FirstSelectedColumn: integer;
  3. LastSelectedColumn: integer;
  4. Selecting: boolean;
  5.  
  6. if (not Selecting) and (Key = VK_SHIFT) then
  7. begin
  8. StartSelectedColumn := vtMain.FocusedColumn;
  9. FirstSelectedColumn := StartSelectedColumn;
  10. LastSelectedColumn := StartSelectedColumn;
  11. Selecting := true;
  12. end;
  13.  
  14. if Key = VK_SHIFT then
  15. Selecting := false;
  16.  
  17. if Selecting then
  18. begin
  19. if column < StartSelectedColumn then
  20. begin
  21. FirstSelectedColumn := column;
  22. LastSelectedColumn := StartSelectedColumn;
  23. end
  24. else if column > StartSelectedColumn then
  25. begin
  26. FirstSelectedColumn := StartSelectedColumn;
  27. LastSelectedColumn := column
  28. end
  29. else
  30. begin
  31. FirstSelectedColumn := column;
  32. LastSelectedColumn := column;
  33. end;
  34. end
  35. else
  36. begin
  37. StartSelectedColumn := column;
  38. FirstSelectedColumn := column;
  39. LastSelectedColumn := column;
  40. end;
  41.  
  42. if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
  43. begin
  44. if vtMain.Focused then
  45. TargetCanvas.Brush.Color := vtMain.Colors.FocusedSelectionColor
  46. else
  47. TargetCanvas.Brush.Color := vtMain.Colors.UnfocusedSelectionColor;
  48. TargetCanvas.Brush.Style := bsSolid;
  49. TargetCanvas.FillRect(CellRect);
  50. end;
  51.  
  52. if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
  53. begin
  54. if vtMain.Focused then
  55. TargetCanvas.Font.Color := clHighlightText
  56. else
  57. TargetCanvas.Font.Color := vtMain.Font.Color;
  58. end;
  59.  
  60. procedure TSomeForm.VTreeStateChange(Sender: TBaseVirtualTree; Enter,Leave: TVirtualTreeStates);
  61. begin
  62. if tsDrawSelecting in Enter then
  63. begin
  64. // Save position
  65. end;
  66. end;
Add Comment
Please, Sign In to add comment