Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Смещение ячеек в TDrawGrid [D7, XP]


Fr ©   (2011-03-27 00:02:00) 

На форме лежит TDrawGrid. При создании формы ячейки растягиваются так, чтобы занять всю область грида:

procedure TForm1.FormCreate(Sender: TObject);
begin
 DrawGrid1.DefaultColWidth:=DrawGrid1.Width div DrawGrid1.ColCount;
 DrawGrid1.DefaultRowHeight:=DrawGrid1.Height div DrawGrid1.RowCount;
end;

После запуска "приложения" :) выделяю мышью ячейку крайнего правого столбца или нижней строки и все ячейки вдруг сдвигаются, оставляя по бокам грида пространство без сетки.
Как сделать так, чтобы не было этого сдвига?

http://dl.dropbox.com/u/8204815/Grid_1.jpg (34,5 КБ)
слева на скриншоте до выделения ячейки, справа - после.


Fr   (2011-03-27 11:12:00) [1]


> _Юрий   (27.03.11 11:10) [6]

Спасибо! Заработало :)


_Юрий   (2011-03-27 11:10:00) [2]

>>DrawGrid1.Width

DrawGrid1.ClientWidth ?


Fr   (2011-03-27 10:49:00) [3]


> Так учесть надо было, а не обнулять!

Так подставьте 0 вместо DrawGrid1.GridLineWidth в
DrawGrid1.DefaultColWidth:=(DrawGrid1.Width - DrawGrid1.ColCount*DrawGrid1.GridLineWidth) div DrawGrid1.ColCount;
и получите на выходе то же самое, что и у меня.

На всякий случай заменил в коде на
 
 DrawGrid1.DefaultColWidth:=(DrawGrid1.Width-DrawGrid1.ColCount*DrawGrid1.GridLineWidth) div DrawGrid1.ColCount;
 DrawGrid1.DefaultRowHeight:=(DrawGrid1.Height-DrawGrid1.RowCount*DrawGrid1.GridLineWidth) div DrawGrid1.RowCount;


Ничего не изменилось - при выборе нижней ячейки вся сетка сдвигается вверх, оставляя под ней пустое место (без ячеек).


Германн   (2011-03-27 00:45:00) [4]

Так учестьнадо было, а не обнулять!
DrawGrid1.DefaultColWidth:=(DrawGrid1.Width - DrawGrid1.ColCount*DrawGrid1.GridLineWidth) div DrawGrid1.ColCount;


Fr   (2011-03-27 00:26:00) [5]

Точнее, при выставленном GridLineWidth в 0, сетка уже сдвигается только по вертикали. Но надо, чтобы она вся оставалась на месте...


Fr   (2011-03-27 00:20:00) [6]


> В расчетах не учтена ширина линий сетки GridLineWidth.

Ничего не меняется, если GridLineWidth выставить в 0


Германн   (2011-03-27 00:10:00) [7]

В расчетах не учтена ширина линий сетки GridLineWidth.


Наверх

Титульная страница Поиск, карта сайта Написать письмо