Как сделать видимой полосу прокрутки VirtualStringTree? - PullRequest
0 голосов
/ 19 сентября 2011

Я поместил одно VirtualStringTree (VST1) в форму form1 и добавил в нее некоторые данные.Вертикальная полоса прокрутки видна независимо от количества узлов, и я ничего не делал со стандартными свойствами высоты узла.Затем я скопировал VST1 в form2 и назвал его VST2, и там полоса прокрутки VST2 больше не видна.Я изменил parent control и свойство align VST2 (я проверял много раз и не могу вспомнить последовательность изменения свойств выравнивания и его родителя), я не знаю, как, наконец, отображается полоса прокрутки.Затем я скопировал VST2 в form3 и назвал его VST3.И теперь, как бы я ни тестировал, его вертикальная полоса прокрутки не видна, когда данные в VST3 выходят за пределы окна.

Слишком много свойств VST, какие свойства я должен установить?

edit:

// vt is on form1, scrollbaroption.alwaysvisible:=false;
//  and vt can show vertical scrollbar,

object vt: TVirtualStringTree 
      Left = 1
      Top = 1
      Width = 353
      Height = 301
      Hint = 'Click header to sort'
      Align = alClient
      Header.AutoSizeIndex = 0
      Header.DefaultHeight = 17
      Header.Font.Charset = DEFAULT_CHARSET
      Header.Font.Color = clWindowText
      Header.Font.Height = -11
      Header.Font.Name = 'MS Sans Serif'
      Header.Font.Style = []
      Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
      Indent = 3
      ParentShowHint = False
      ShowHint = True
      TabOrder = 3
      TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
      TreeOptions.PaintOptions = [toShowRoot, toThemeAware, toUseBlendedImages]
      TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect]
      OnChange = vtChange
      OnCompareNodes = vtCompareNodes
      OnFocusChanged = vtFocusChanged
      OnFreeNode = vtFreeNode
      OnGetText = vtGetText
      OnGetNodeDataSize = vtGetNodeDataSize
      OnHeaderClick = vtHeaderClick
      OnLoadNode = vtLoadNode
      OnSaveNode = vtSaveNode
      Columns = <
        item
          Position = 0
          Width = 168
          WideText = 'Type'
        end
        item
          Position = 1
          Width = 80
          WideText = 'Frequency'
        end
        item
          Position = 2
          Width = 80
          WideText = 'Percent'
        end
        item
          CheckBox = True
          Position = 3
          Width = 80
          WideText = 'Rank'
        end
        item
          Position = 4
          Width = 80
          WideText = 'Length'
        end
        item
          Position = 5
          WideText = 'Syllables'
        end
        item
          Position = 6
        end>
    end
  end


//tfvt is on form2, scrollbaroption.alwaysvisible:=true;
// I tested both scrollbaroption.alwaysvisible:=true and false
// yesterday it showed scrollbar, today it does not.
// tfvt does not show vertical scrollbar.

      object tfvt: TVirtualStringTree
        Left = 1
        Top = 138
        Width = 737
        Height = 227
        Hint = 'Click header to sort'
        Align = alClient
        Header.AutoSizeIndex = 0
        Header.DefaultHeight = 17
        Header.Font.Charset = DEFAULT_CHARSET
        Header.Font.Color = clWindowText
        Header.Font.Height = -11
        Header.Font.Name = 'MS Sans Serif'
        Header.Font.Style = []
        Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
        Indent = 3
        ParentShowHint = False
        ScrollBarOptions.AlwaysVisible = True
        ShowHint = True
        TabOrder = 2
        TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
        TreeOptions.PaintOptions = [toShowRoot, toThemeAware, toUseBlendedImages]
        TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect]
        OnChange = tfvtChange
        OnCompareNodes = tfvtCompareNodes
        OnFocusChanged = tfvtFocusChanged
        OnFocusChanging = tfvtFocusChanging
        OnFreeNode = tfvtFreeNode
        OnGetText = tfvtGetText
        OnGetNodeDataSize = tfvtGetNodeDataSize
        OnHeaderClick = tfvtHeaderClick
        OnLoadNode = tfvtLoadNode
        OnSaveNode = tfvtSaveNode
        Columns = <
          item
            Position = 0
            Width = 80
          end
          item
            Position = 1
            Width = 80
          end
          item
            Position = 2
            Width = 80
          end
          item
            CheckBox = True
            Position = 3
            Width = 80
          end
          item
            Position = 4
            Width = 80
          end
          item
            Position = 5
            Width = 80
          end
          item
            Position = 6
            Width = 80
          end>
      end
    end
  end
end

//  kwicvt is on form3, scrollbaroption.alwaysvisible:=true;
// I tested both scrollbaroption.alwaysvisible:=true and false
//  Now kwicvt does not show vertical scrollbar.
// 

object kwicvt: TVirtualStringTree
      Left = 32
      Top = 24
      Width = 433
      Height = 317
      Hint = 'Click header to sort'
      Header.AutoSizeIndex = 0
      Header.DefaultHeight = 17
      Header.Font.Charset = DEFAULT_CHARSET
      Header.Font.Color = clWindowText
      Header.Font.Height = -11
      Header.Font.Name = 'MS Sans Serif'
      Header.Font.Style = []
      Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
      Indent = 3
      ParentShowHint = False
      ShowHint = True
      TabOrder = 0
      TreeOptions.AnimationOptions = [toAnimatedToggle]
      TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
      TreeOptions.PaintOptions = [toShowRoot, toThemeAware, toUseBlendedImages]
      TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect]
      OnChange = kwicvtChange
      OnCompareNodes = kwicvtCompareNodes
      OnFocusChanged = kwicvtFocusChanged
      OnFreeNode = kwicvtFreeNode
      OnGetText = kwicvtGetText
      OnGetNodeDataSize = kwicvtGetNodeDataSize
      OnHeaderClick = kwicvtHeaderClick
      OnLoadNode = kwicvtLoadNode
      OnSaveNode = kwicvtSaveNode
      Columns = <
        item
          Position = 0
          Width = 80
        end
        item
          Alignment = taRightJustify
          Position = 1
          Width = 80
        end
        item
          Alignment = taCenter
          Position = 2
          Width = 80
        end
        item
          CheckBox = True
          Position = 3
          Width = 80
        end
        item
          Position = 4
          Width = 80
        end
        item
          Position = 5
          Width = 80
        end
        item
          Position = 6
          Width = 80
        end>
    end

[Edit]:

Сначала спасибо.

Я тщательно протестировал и обнаружил, что если я позвоню тому жеФункционируйте более одного раза, со второго раза, появится виртуальная полоса прокрутки.Примерно так:

function fill;
begin
// filling VST;
end;

function button1click;
begin
fill;
end;

Я нажимаю кнопку 1 впервые, вертикальная полоса прокрутки не появляется;если во второй или более раз он показывает отлично.

Зачем ?, как решить?

Спасибо

1 Ответ

2 голосов
/ 19 сентября 2011

Параметры полосы прокрутки VirtualTree устанавливаются через свойство ScrollBarOptions.Проверьте значение ScrollBarOptions.ScrollBars - возможно, это ssNone в VST3, и поэтому полос прокрутки нет?

...