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

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

автоширина столца в DBGridEH


Lt ©   (2003-07-25 09:22:00) 

День добрый. Можно ли (и как) в DBGridEh устанавливать автоширину ОТДЕЛЬНОГО столбца в зависимости от ширины содержимого ячейки? Установка для столбца Autowith в true не срабатывает.


Lt   (2003-07-29 10:59:00) [1]

И снова об автовписывании текста в ячейку. Написал процедуру по автоизменению ширины ячейки. Посоветуйте, на какое событие грида (или таблицы? или набора данных?) ее лучше повесить. Смысл в том, чтобы автовыравнивание происходило автоматически после изменения зщначения текста в ячейке пользователем.

procedure TfrmMain.btnHClick(Sender: TObject);
var
WidthMax, WidthField, WidthTitle: Integer;
I: Byte;
begin
with DBGridEh1, dmMain.tblMain do
begin
for I := 0 to Columns.Count - 1 do
begin
WidthMax := 0;
DisableControls;
if I = 0 then WidthMax := 20
else
begin
First;
while not EOF do
begin
WidthField := Canvas.TextWidth(Columns[I].Field.DisplayText);
WidthTitle := Canvas.TextWidth(Columns[I].Title.Caption);
if WidthField < WidthTitle then
if Columns[I].Title.SortMarker = smNoneEh then WidthField := WidthTitle
else WidthField := WidthTitle + 16
else
if (Columns[I].ButtonStyle = cbsEllipsis) or
(Columns[I].ButtonStyle = cbsDropDown) or
( Columns[I].ButtonStyle = cbsAuto)

И снова об автовписывании текста в ячейку. Написал процедуру по автоизменению ширины ячейки. Посоветуйте, на какое событие грида (или таблицы? или набора данных?) ее лучше повесить. Смысл в том, чтобы автовыравнивание происходило автоматически после изменения зщначения текста в ячейке пользователем.

procedure TfrmMain.btnHClick(Sender: TObject);
var
WidthMax, WidthField, WidthTitle: Integer;
I: Byte;
begin
with DBGridEh1, dmMain.tblMain do
begin
for I := 0 to Columns.Count - 1 do
begin
WidthMax := 0;
DisableControls;
if I = 0 then WidthMax := 20
else
begin
First;
while not EOF do
begin
WidthField := Canvas.TextWidth(Columns[I].Field.DisplayText);
WidthTitle := Canvas.TextWidth(Columns[I].Title.Caption);
if WidthField < WidthTitle then
if Columns[I].Title.SortMarker = smNoneEh then WidthField := WidthTitle
else WidthField := WidthTitle + 16
else
if (Columns[I].ButtonStyle = cbsEllipsis) or
(Columns[I].ButtonStyle = cbsDropDown) or
(Columns[I].ButtonStyle = cbsAuto) then
WidthField := WidthField + 16;
if WidthField > WidthMax then
WidthMax := WidthField;
Next;
end;
end;
Columns[I].Width := WidthMax + 10;
First;
EnableControls;
end;
end;
end;


Johnmen   (2003-07-25 12:44:00) [2]

Таких нет...


Lt   (2003-07-25 12:15:00) [3]

Ясно. А какие компоненты с данным свойством (автоширина ОТДЕЛЬНОГО столбца в зависимости от ширины содержимого ячейки)посоветуете?


ekc   (2003-07-25 11:19:00) [4]

Если установить свойство Autowith=True для TDBGridEh, а затем для всех Columns (кроме одного, двух и т.д.) Autowith=False, то и будут растягиваться только тот (те) Columns у которого остался Autowith=True


Johnmen   (2003-07-25 10:40:00) [5]

То же самое для конкретной колонки. Т.е. пропорциональное изменение ширины в зависимости от других колонок...


Lt   (2003-07-25 10:00:00) [6]

Autowith для TDBGridEh растягивает содержимое всего грида, а что тогда делает свойство autowith для TDBGridEh.Columns?


Johnmen   (2003-07-25 09:35:00) [7]

Нет.


Наверх

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