Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- StartSelectedColumn: integer;
- FirstSelectedColumn: integer;
- LastSelectedColumn: integer;
- Selecting: boolean;
- if (not Selecting) and (Key = VK_SHIFT) then
- begin
- StartSelectedColumn := vtMain.FocusedColumn;
- FirstSelectedColumn := StartSelectedColumn;
- LastSelectedColumn := StartSelectedColumn;
- Selecting := true;
- end;
- if Key = VK_SHIFT then
- Selecting := false;
- if Selecting then
- begin
- if column < StartSelectedColumn then
- begin
- FirstSelectedColumn := column;
- LastSelectedColumn := StartSelectedColumn;
- end
- else if column > StartSelectedColumn then
- begin
- FirstSelectedColumn := StartSelectedColumn;
- LastSelectedColumn := column
- end
- else
- begin
- FirstSelectedColumn := column;
- LastSelectedColumn := column;
- end;
- end
- else
- begin
- StartSelectedColumn := column;
- FirstSelectedColumn := column;
- LastSelectedColumn := column;
- end;
- if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
- begin
- if vtMain.Focused then
- TargetCanvas.Brush.Color := vtMain.Colors.FocusedSelectionColor
- else
- TargetCanvas.Brush.Color := vtMain.Colors.UnfocusedSelectionColor;
- TargetCanvas.Brush.Style := bsSolid;
- TargetCanvas.FillRect(CellRect);
- end;
- if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
- begin
- if vtMain.Focused then
- TargetCanvas.Font.Color := clHighlightText
- else
- TargetCanvas.Font.Color := vtMain.Font.Color;
- end;
- procedure TSomeForm.VTreeStateChange(Sender: TBaseVirtualTree; Enter,Leave: TVirtualTreeStates);
- begin
- if tsDrawSelecting in Enter then
- begin
- // Save position
- end;
- end;
Add Comment
Please, Sign In to add comment