0

I use the following code to place VirtualTreeView vertical scrollbar on the right side in the RightToLeft bidimode and place it on the left side in the LeftToRight mode.

procedure TForm1.Button2Click(Sender: TObject);
const
  LSB = WS_EX_LEFTSCROLLBAR;
var
  ExStyle: LONG_PTR;
begin
  ExStyle := GetWindowLongPtr(AVTV.Handle, GWL_EXSTYLE);

  // Check if RTL alignment specified for you component
  if AVTV.BiDiMode = bdRightToLeft then
  begin
    // If so, then exclude LSB-constant and allow Windows place 
    // scrollbar on the right side of window
    if (ExStyle and LSB) = LSB then
      SetWindowLongPtr(AVTV.Handle, GWL_EXSTYLE, ExStyle and not LSB);
  end
  else
  if AVTV.BiDiMode = bdLeftToRight then
  begin
    // The same as operation above but for LTR order
    if (ExStyle and LSB) <> LSB then
      SetWindowLongPtr(AVTV.Handle, GWL_EXSTYLE, ExStyle or LSB);
  end;
end;

It works correctly but there is a problem when tree is in grid mode and has header columns. Please see screenshot:

enter image description here

Tom Brunberg
  • 20,312
  • 8
  • 37
  • 54
saeid2014
  • 133
  • 8

0 Answers0