StringGrid Delphi
Свойство Width
Свойство Width компонента StringGrid содержит и задаёт ширину компонента в пикселах.
На значение свойства Width не влияет количество столбцов, содержащихся в таблице. Это просто размеры окна, в котором компонент будет отрисовываться.
Если всё количество столбцов не помещается по высоте в размеры окна компонента, то автоматически появляется горизонтальная полоса прокрутки. Появление гоизонтальной полосы прокрутки можно запретить, придав свойству ScrollBars значение ssVertical или ssNone.
Иногда программисту может потребоваться уже в ходе работы программы установить такое значение свойства Width, чтобы в окне компонента были видны все его столбцы, и тем самым горизонтальная полоса прокрутки не появлялась бы.
В таком случае значение свойства Width складывается из суммы ширин каждого столбца, плюс толщина линий между столбцами, плюс 2 пиксела на толщину внешней границы (см. свойство BorderStyle) компонента StringGrid. Также на значение свойства Width влияет свойство Ctl3D компонента. При значении Ctl3D = True к результирующему значению свойства Width нужно прибавить ещё один пиксел.
Также нужно учесть влияние на результирующую ширину ширины вертикальной полосы прокрутки, и при её наличии прибавить к ширине компонента ещё 21, а лучше 22 пиксела.
Таким образом, следующая процедурка придаст свойству Width компонента StringGrid значение, при котором в появлении горизонтальной полосы прокрутки не будет необходимости:
var i, W: Integer;
begin
W:=25;
with StringGrid1 do
for i:=0 to ColCount-1 do
W:=W+ColWidths[i]+1;
StringGrid1.Width:=W;
end;
Есть ещё один метод нахождения такого значения свойства Width, при котором все столбцы находятся в зоне видимости в окне компонента. Этот метод использует доступное программно свойство VisibleColCount (количество полностью видимых столбцов) компонента StringGrid. Этот метод более прост, так как не требует учёта никаких дополнительных слагаемых. К текущей ширине компонента нужно прибавлять по 2 пиксела, пока значение VisibleColCount меньше чем ColCount-1:
begin
with StringGrid1 do
while VisibleColCount < ColCount-1 do
Width:=Width+2;
end;
Читайте также:
- Свойство DefaultColWidth StringGrid Delphi