mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-05 07:37:24 +01:00
Examples: Extend Treeview customdraw sample project by HideSelection option.
This commit is contained in:
parent
5adcd2c308
commit
ad7e912a49
@ -51,7 +51,7 @@ object MainForm: TMainForm
|
||||
end
|
||||
object lbTask: TListBox
|
||||
Left = 0
|
||||
Height = 400
|
||||
Height = 377
|
||||
Top = 53
|
||||
Width = 288
|
||||
Align = alClient
|
||||
@ -65,6 +65,7 @@ object MainForm: TMainForm
|
||||
'Bold top-level nodes'
|
||||
'Top-level node gradient'
|
||||
'Rounded rectangles'
|
||||
'RowSelect + hot-track (themed)'
|
||||
'RowSelect + hot-track (full line)'
|
||||
'RowSelect + hot-track (at icon)'
|
||||
'RowSelect + hot-track (at text)'
|
||||
@ -85,79 +86,80 @@ object MainForm: TMainForm
|
||||
end
|
||||
object Panel2: TPanel
|
||||
Left = 0
|
||||
Height = 77
|
||||
Top = 461
|
||||
Height = 100
|
||||
Top = 438
|
||||
Width = 288
|
||||
Align = alBottom
|
||||
AutoSize = True
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 77
|
||||
ClientHeight = 100
|
||||
ClientWidth = 288
|
||||
TabOrder = 1
|
||||
object btnToggleEnabledDisabled: TButton
|
||||
AnchorSideLeft.Control = Panel2
|
||||
AnchorSideTop.Control = cmbExpandSign
|
||||
AnchorSideTop.Control = cbShowLines
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 25
|
||||
Top = 52
|
||||
Top = 75
|
||||
Width = 205
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Toggle 1st node enabled/disabled'
|
||||
TabOrder = 0
|
||||
TabOrder = 5
|
||||
OnClick = btnToggleEnabledDisabledClick
|
||||
end
|
||||
object cbShowLines: TCheckBox
|
||||
AnchorSideLeft.Control = cbShowButtons
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Panel2
|
||||
Left = 111
|
||||
AnchorSideLeft.Control = Panel2
|
||||
AnchorSideTop.Control = cbShowButtons
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 19
|
||||
Top = 0
|
||||
Top = 50
|
||||
Width = 74
|
||||
BorderSpacing.Left = 20
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Show lines'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 1
|
||||
TabOrder = 4
|
||||
OnChange = cbShowLinesChange
|
||||
end
|
||||
object cbMultiSelect: TCheckBox
|
||||
AnchorSideLeft.Control = cbShowLines
|
||||
AnchorSideLeft.Control = cbHideSelection
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Panel2
|
||||
Left = 205
|
||||
Left = 124
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 81
|
||||
BorderSpacing.Left = 20
|
||||
Caption = 'Multi-select'
|
||||
TabOrder = 2
|
||||
TabOrder = 1
|
||||
OnChange = cbMultiSelectChange
|
||||
end
|
||||
object cbShowButtons: TCheckBox
|
||||
AnchorSideLeft.Control = Panel2
|
||||
AnchorSideTop.Control = Panel2
|
||||
AnchorSideTop.Control = cbHideSelection
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 19
|
||||
Top = 0
|
||||
Top = 25
|
||||
Width = 91
|
||||
Caption = 'Show buttons'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 3
|
||||
TabOrder = 2
|
||||
OnChange = cbShowButtonsChange
|
||||
end
|
||||
object cmbExpandSign: TComboBox
|
||||
AnchorSideLeft.Control = Panel2
|
||||
AnchorSideTop.Control = cbShowLines
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
AnchorSideLeft.Control = cbMultiSelect
|
||||
AnchorSideTop.Control = cbShowButtons
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 124
|
||||
Height = 23
|
||||
Top = 23
|
||||
Width = 104
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Top = 6
|
||||
ItemHeight = 15
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
@ -168,10 +170,24 @@ object MainForm: TMainForm
|
||||
'> symbol'
|
||||
)
|
||||
Style = csDropDownList
|
||||
TabOrder = 4
|
||||
TabOrder = 3
|
||||
Text = 'themed sign'
|
||||
OnChange = cmbExpandSignChange
|
||||
end
|
||||
object cbHideSelection: TCheckBox
|
||||
AnchorSideLeft.Control = Panel2
|
||||
AnchorSideTop.Control = Panel2
|
||||
Left = 0
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 104
|
||||
BorderSpacing.Bottom = 6
|
||||
Caption = 'cbHideSelection'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 0
|
||||
OnChange = cbHideSelectionChange
|
||||
end
|
||||
end
|
||||
end
|
||||
object Splitter1: TSplitter
|
||||
|
||||
@ -17,6 +17,7 @@ type
|
||||
cbShowLines: TCheckBox;
|
||||
cbMultiSelect: TCheckBox;
|
||||
cbShowButtons: TCheckBox;
|
||||
cbHideSelection: TCheckBox;
|
||||
cmbExpandSign: TComboBox;
|
||||
ImageList1: TImageList;
|
||||
Label1: TLabel;
|
||||
@ -26,6 +27,7 @@ type
|
||||
Splitter1: TSplitter;
|
||||
TreeView: TTreeView;
|
||||
procedure btnToggleEnabledDisabledClick(Sender: TObject);
|
||||
procedure cbHideSelectionChange(Sender: TObject);
|
||||
procedure cbMultiSelectChange(Sender: TObject);
|
||||
procedure cbShowButtonsChange(Sender: TObject);
|
||||
procedure cbShowLinesChange(Sender: TObject);
|
||||
@ -101,19 +103,20 @@ const
|
||||
tTopLevelBold = 4;
|
||||
tTopLevelGradient = 5;
|
||||
tRoundRectNodes = 6;
|
||||
tRowSelect_HotTrack_Full = 7;
|
||||
tRowSelect_HotTrack_Icon = 8;
|
||||
tRowSelect_HotTrack_Text = 9;
|
||||
tRowSelect_HotTrack_Gradient_Full = 10;
|
||||
tRowSelect_HotTrack_Gradient_Icon = 11;
|
||||
tRowSelect_HotTrack_Gradient_Text = 12;
|
||||
tRowSelect_HotTrack_Gradient_TextOnly = 13;
|
||||
tSelectHotTrack_Image = 14;
|
||||
tBackgroundImage_Themed = 15;
|
||||
tBackgroundImage_NotThemed = 16;
|
||||
tBackgroundImage_Themed_NoHotTrackIcons = 17;
|
||||
tBackgroundGradient_Themed = 18;
|
||||
tBackgroundGradient_NotThemed = 19;
|
||||
tRowSelect_HotTrack_Themed = 7;
|
||||
tRowSelect_HotTrack_Full = 8;
|
||||
tRowSelect_HotTrack_Icon = 9;
|
||||
tRowSelect_HotTrack_Text = 10;
|
||||
tRowSelect_HotTrack_Gradient_Full = 11;
|
||||
tRowSelect_HotTrack_Gradient_Icon = 12;
|
||||
tRowSelect_HotTrack_Gradient_Text = 13;
|
||||
tRowSelect_HotTrack_Gradient_TextOnly = 14;
|
||||
tSelectHotTrack_Image = 15;
|
||||
tBackgroundImage_Themed = 16;
|
||||
tBackgroundImage_NotThemed = 17;
|
||||
tBackgroundImage_Themed_NoHotTrackIcons = 18;
|
||||
tBackgroundGradient_Themed = 19;
|
||||
tBackgroundGradient_NotThemed = 20;
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
@ -147,6 +150,11 @@ begin
|
||||
node.Enabled := not node.Enabled;
|
||||
end;
|
||||
|
||||
procedure TMainForm.cbHideSelectionChange(Sender: TObject);
|
||||
begin
|
||||
TreeView.HideSelection := cbHideSelection.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.cbMultiSelectChange(Sender: TObject);
|
||||
begin
|
||||
if cbMultiSelect.Checked then
|
||||
@ -247,6 +255,9 @@ begin
|
||||
TreeView.OnAdvancedCustomDrawItem := @RoundedRectNodes_AdvancedCustomDrawItem;
|
||||
end;
|
||||
|
||||
tRowSelect_HotTrack_Themed:
|
||||
TreeView.Options := TreeView.Options + [tvoRowSelect, tvoHotTrack, tvoThemedDraw];
|
||||
|
||||
tRowSelect_HotTrack_Full,
|
||||
tRowSelect_HotTrack_Icon,
|
||||
tRowSelect_HotTrack_Text:
|
||||
@ -339,7 +350,8 @@ begin
|
||||
Sender.Canvas.Brush.Color := clGray;
|
||||
Sender.Canvas.Font.Color := clHighlightText;
|
||||
Sender.Canvas.Font.Style := [];
|
||||
end;
|
||||
end else
|
||||
Sender.Canvas.Brush.Color := clNone;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -387,7 +399,10 @@ begin
|
||||
Sender.Canvas.Brush.Color := clNone;
|
||||
if lbTask.ItemIndex = tBackgroundImage_Themed_NoHotTrackIcons then
|
||||
PaintImages := false;
|
||||
end;
|
||||
end
|
||||
else
|
||||
// Prevent drawing of node text background over the image
|
||||
Sender.Canvas.Brush.Color := clNone;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<BuildModes>
|
||||
<Item Name="Default" Default="True"/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user