![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
КАК поставить ширину колонки грида по самому длинному значению? [D6, MSSQL]
BlackTiger © (2002-09-16 12:56:00)Где-то в API есть функция, которая возвращает ширину (длину) и высоту заданного текста исходя из параметров шрифта. Никто не подскажет?
Может это можно решить другим путем?
Задачка - заресайзить колонки DBGrid"a по текущим значениям так, чтобы их значение были видны на экране (как в Excel или почти).
Aristarh (2002-09-16 13:35:00) [1]
У меня сейчас реализовано нечто по смыслу напоминающее то, что предложил Separator. Но хочу переделать с использованием хранимой процедуры. Например, написать аналог ф-ии Length и таким образом определять max длину. Это позволит разгрузить клиент.
sniknik (2002-09-16 13:29:00) [2]GetTextExtentPoint32 но лутше наверно методом от канваса пользоватся.
Separator (2002-09-16 13:24:00) [3]
procedure AutoSizeGridColumn;
var
i, j, temp, max: integer;
St: string;
begin
with Grid do
begin
for j:= 0 to (ColCount-1) do
begin
max := 0;
for i := 0 to (RowCount-1) do
begin
St:= cells[j, i];
if TypeStr(St)= tsDate then
St:= TimeToStr(StrToDateTime(St));
temp:= Canvas.TextWidth(St);
if temp>max then
max:= temp
end;
ColWidths[j]:= Max+GridLineWidth+4
end
end
end;