type
TScrollingForm = class(TForm)
Tree1: TTree;
CheckBoxScrolling: TCheckBox;
ComboBoxDirection: TComboBox;
ComboBoxButton: TComboBox;
LabelStatus: TLabel;
procedure FormCreate(Sender: TObject);
procedure Tree1Scroll(Sender: TObject);
procedure CheckBoxScrollingClick(Sender: TObject);
procedure ComboBoxDirectionChange(Sender: TObject);
procedure ComboBoxButtonChange(Sender: TObject);
end;
procedure TScrollingForm.FormCreate(Sender: TObject);
begin
// Create sample nodes
Tree1.Add('Node 1');
Tree1.Add('Node 2');
Tree1.Add('Node 3');
Tree1.Add('Node 4');
Tree1.Add('Node 5');
// Disable zoom to focus on scrolling
Tree1.Zoom.Allow := False;
// Setup direction combo
ComboBoxDirection.Items.Add('Horizontal');
ComboBoxDirection.Items.Add('Vertical');
ComboBoxDirection.Items.Add('Both');
ComboBoxDirection.ItemIndex := 2;
// Setup mouse button combo
ComboBoxButton.Items.Add('Left');
ComboBoxButton.Items.Add('Middle');
ComboBoxButton.Items.Add('Right');
ComboBoxButton.ItemIndex := 2; // Right button
// Enable scrolling
Tree1.AllowPanning := pmBoth;
Tree1.ScrollMouseButton := mbRight;
end;
procedure TScrollingForm.Tree1Scroll(Sender: TObject);
begin
// Event called when tree is scrolled
LabelStatus.Caption := Format(
'Horizontal: %d, Vertical: %d',
[Tree1.View3DOptions.HorizOffset, Tree1.View3DOptions.VertOffset]
);
end;
procedure TScrollingForm.CheckBoxScrollingClick(Sender: TObject);
begin
ComboBoxDirection.Enabled := CheckBoxScrolling.Checked;
if CheckBoxScrolling.Checked then
begin
case ComboBoxDirection.ItemIndex of
0: Tree1.AllowPanning := pmHorizontal;
1: Tree1.AllowPanning := pmVertical;
2: Tree1.AllowPanning := pmBoth;
end;
end
else
Tree1.AllowPanning := pmNone; // Disable scrolling
end;
procedure TScrollingForm.ComboBoxDirectionChange(Sender: TObject);
begin
// Change scrolling direction
case ComboBoxDirection.ItemIndex of
0: Tree1.AllowPanning := pmHorizontal;
1: Tree1.AllowPanning := pmVertical;
2: Tree1.AllowPanning := pmBoth;
end;
end;
procedure TScrollingForm.ComboBoxButtonChange(Sender: TObject);
begin
// Change scrolling mouse button
case ComboBoxButton.ItemIndex of
0: Tree1.ScrollMouseButton := mbLeft;
1: Tree1.ScrollMouseButton := mbMiddle;
2: Tree1.ScrollMouseButton := mbRight;
end;
end;