![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
автоширина столца в 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]
Нет.