2011-09-19 3 views
0

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

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

редактировать:

// 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 

[Изменить]:

Спасибо айн первым.

Я тщательно протестировал и обнаружил, что если я вызову ту же функцию более одного раза, со второго раза, появится виртуальная панель прокрутки. Что-то вроде:

function fill; 
begin 
// filling VST; 
end; 

function button1click; 
begin 
fill; 
end; 

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

Почему ?, как его решить?

Благодаря

+0

Какая версия delphi и какая версия virtualtree? – ain

+0

@ain, Delphi 7. virtualtreeview 4.87 – Warren

+0

@ain, я разместил 3-й текст. посмотрите пожалуйста. – Warren

ответ

2

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

+0

Спасибо, но он установлен ssboth. Я не знаю почему? – Warren

+0

Хм, у вас есть достаточно узлов в дереве, чтобы полоса прокрутки была видимой? Это имеет значение, если вы устанавливаете 'ScrollBarOptions.AlwaysVisible: = True'? – ain

+0

спасибо, scrollbaroption.alwaysvisible это правда. Режим просмотра VST - это список. Я заполнил около 1000 записей. Если я добавил vst3.FocusedNode: = vst3.GetLast (nil, false) в конец заполнения, последняя запись будет видна, но полоса прокрутки все еще не видна. – Warren

Смежные вопросы