Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Внизавтоширина столца в DBGridEH Найти похожие ветки
← →
Lt (2003-07-25 09:22) [0]День добрый. Можно ли (и как) в DBGridEh устанавливать автоширину ОТДЕЛЬНОГО столбца в зависимости от ширины содержимого ячейки? Установка для столбца Autowith в true не срабатывает.
← →
Johnmen (2003-07-25 09:35) [1]Нет.
← →
Lt (2003-07-25 10:00) [2]Autowith для TDBGridEh растягивает содержимое всего грида, а что тогда делает свойство autowith для TDBGridEh.Columns?
← →
Johnmen (2003-07-25 10:40) [3]То же самое для конкретной колонки. Т.е. пропорциональное изменение ширины в зависимости от других колонок...
← →
ekc (2003-07-25 11:19) [4]Если установить свойство Autowith=True для TDBGridEh, а затем для всех Columns (кроме одного, двух и т.д.) Autowith=False, то и будут растягиваться только тот (те) Columns у которого остался Autowith=True
← →
Lt (2003-07-25 12:15) [5]Ясно. А какие компоненты с данным свойством (автоширина ОТДЕЛЬНОГО столбца в зависимости от ширины содержимого ячейки)посоветуете?
← →
Johnmen (2003-07-25 12:44) [6]Таких нет...
← →
Lt (2003-07-29 10:59) [7]И снова об автовписывании текста в ячейку. Написал процедуру по автоизменению ширины ячейки. Посоветуйте, на какое событие грида (или таблицы? или набора данных?) ее лучше повесить. Смысл в том, чтобы автовыравнивание происходило автоматически после изменения зщначения текста в ячейке пользователем.
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;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c