From ad7e912a49e9de03d6b18c008596cd4ddad41086 Mon Sep 17 00:00:00 2001 From: wp_xyz Date: Sun, 16 Feb 2025 16:30:44 +0100 Subject: [PATCH] Examples: Extend Treeview customdraw sample project by HideSelection option. --- examples/treeview/customdrawing/main.lfm | 68 ++++++++++++------- examples/treeview/customdrawing/main.pas | 45 ++++++++---- .../treeview_customdraw_demo.lpi | 1 - 3 files changed, 72 insertions(+), 42 deletions(-) diff --git a/examples/treeview/customdrawing/main.lfm b/examples/treeview/customdrawing/main.lfm index 4a23cf758a..5dcc6aba4e 100644 --- a/examples/treeview/customdrawing/main.lfm +++ b/examples/treeview/customdrawing/main.lfm @@ -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 diff --git a/examples/treeview/customdrawing/main.pas b/examples/treeview/customdrawing/main.pas index 77783b8ec2..44ecdc4ff3 100644 --- a/examples/treeview/customdrawing/main.pas +++ b/examples/treeview/customdrawing/main.pas @@ -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; diff --git a/examples/treeview/customdrawing/treeview_customdraw_demo.lpi b/examples/treeview/customdrawing/treeview_customdraw_demo.lpi index d8139992d4..ed84d6760c 100644 --- a/examples/treeview/customdrawing/treeview_customdraw_demo.lpi +++ b/examples/treeview/customdrawing/treeview_customdraw_demo.lpi @@ -12,7 +12,6 @@ -