![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Grid [D6]
vavan © (2003-06-24 18:53:00)Подскажите пожалуйста как получить самую длинную строку текста из колонки грида. Грид из компоненты EHlib.
Необходимо сделать примерно такDBGridEh11.Columns[0].Width:=самый длинный текст колонки 0
SergeyKatruk (2003-06-27 10:23:00) [1]
Как ни крути, а ширина колонки будет отображаться правильно только если шрифт фиксированной ширины (Courier, Terminal...).
Arial и Times New Roman - не фиксированы.
Я в таком же случае так и не нашол хорошего решения и поэтому просто ширину ячейки пишу в INI-шку на выходе, а на входе ставлю.
roottim (2003-06-26 08:29:00) [2]есть
length(xxx)
sniknik (2003-06-26 02:29:00) [3]есть аналог MSSQL/Access функции Len в Oracle?
тогда так
Select Max(Len(MyColumn)) from MyTable
> получить самую длинную строку текста (в смысле максимальную длинну в символах)
у Соловьев © (25.06.03 11:52) длинна нужная для отображения строки, при текуших установках шрифта. и толко для отображаемых в текущий момент (видимых в гриде).
кстати еще и перерисовыватся будет по 2 раза.
NDeu (2003-06-25 23:38:00) [4]
> vavan (25.06.03 20:03)
> возвращает запись опф, что это за ерунда, база оракловая.
Так и должно быт :)
Правильное решение
> Соловьев © (25.06.03 11:52)
vavan (2003-06-25 20:03:00) [5]Запрос SQL select max(xxx)from table; из таблицы
ххх
---
опф
tyjkk
5444
возвращает запись опф, что это за ерунда, база оракловая.
Соловьев (2003-06-25 16:56:00) [6]
> DBGridEh11.Columns[0].Width:=3;
3 пикселя
> DBGridEh11.Columns[0].Width:=DBGridEh11.Canvas.TextWidth("123");
>
зависит от Font.Haight и типа Font.Name
vavan (2003-06-25 16:52:00) [7]Спасибо всем, но теперь появилась другая проблема:
Ширина колонки в этом варианте DBGridEh11.Columns[0].Width:=DBGridEh11.Canvas.TextWidth("123"); получается намного больше чем в этом DBGridEh11.Columns[0].Width:=3;
Соловьев (2003-06-25 11:52:00) [8]
> DBGridEh11.Columns[0].Width:=самый длинный текст колонки
> 0
обработать событие DrawColumnCell:
... Max := (Sender as DBGridEh).Canvas.TextWidth(Columns[0].Field.Value);
...
(Sender as DBGridEh).Columns[0].Width := Max;
Stas (2003-06-25 11:41:00) [9]Смотря какой движок.
Тогда так:
Select Max (MyColumn) from MyTable
ORDER BY My Column
Stas (2003-06-25 11:41:00) [10]Смотря какой движок.
Тогда так:
Select Max (MyColumn) from MyTable
ORDER BY MyColumn
Ruslan Banshchikov (2003-06-25 11:23:00) [11]Select Max (MyColumn) from MyTable
покажет последнюю отсортированную строку
Stas (2003-06-25 11:11:00) [12]Можно запросом Select Max (MyColumn) from MyTable
Ruslan Banshchikov (2003-06-25 10:06:00) [13]Ну типа заменить MainGrid на DBGridEh11
Ruslan Banshchikov (2003-06-25 10:05:00) [14]MainGrid.DataSource.DataSet.First;
while not MainGrid.DataSource.DataSet.Eof do begin
MainGrid.Columns[0].Width:=max(MainGrid.Columns[0].Width,
MainGrid.Canvas.TextWidth(
MainGrid.DataSource.DataSet.FieldbyName(MainGrid.Columns[0].FieldName).AsString));
MainGrid.DataSource.DataSet.Next;
end;