Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Grid   Найти похожие ветки 

 
vavan   (2003-06-24 18:53) [0]

Подскажите пожалуйста как получить самую длинную строку текста из колонки грида. Грид из компоненты EHlib.
Необходимо сделать примерно так DBGridEh11.Columns[0].Width:=самый длинный текст колонки 0


 
Ruslan Banshchikov   (2003-06-25 10:05) [1]

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;



 
Ruslan Banshchikov   (2003-06-25 10:06) [2]

Ну типа заменить MainGrid на DBGridEh11


 
Stas ©   (2003-06-25 11:11) [3]

Можно запросом Select Max (MyColumn) from MyTable


 
Ruslan Banshchikov   (2003-06-25 11:23) [4]

Select Max (MyColumn) from MyTable

покажет последнюю отсортированную строку


 
Stas ©   (2003-06-25 11:41) [5]

Смотря какой движок.

Тогда так:
Select Max (MyColumn) from MyTable
ORDER BY My Column


 
Stas ©   (2003-06-25 11:41) [6]

Смотря какой движок.

Тогда так:
Select Max (MyColumn) from MyTable
ORDER BY MyColumn


 
Соловьев ©   (2003-06-25 11:52) [7]


> DBGridEh11.Columns[0].Width:=самый длинный текст колонки
> 0

обработать событие DrawColumnCell:

... Max := (Sender as DBGridEh).Canvas.TextWidth(Columns[0].Field.Value);
...
(Sender as DBGridEh).Columns[0].Width := Max;



 
vavan   (2003-06-25 16:52) [8]

Спасибо всем, но теперь появилась другая проблема:
Ширина колонки в этом варианте DBGridEh11.Columns[0].Width:=DBGridEh11.Canvas.TextWidth("123"); получается намного больше чем в этом DBGridEh11.Columns[0].Width:=3;


 
Соловьев ©   (2003-06-25 16:56) [9]


> DBGridEh11.Columns[0].Width:=3;

3 пикселя


> DBGridEh11.Columns[0].Width:=DBGridEh11.Canvas.TextWidth("123");
>

зависит от Font.Haight и типа Font.Name


 
vavan   (2003-06-25 20:03) [10]

Запрос SQL select max(xxx)from table; из таблицы
ххх
---
опф
tyjkk
5444

возвращает запись опф, что это за ерунда, база оракловая.


 
NDeu ©   (2003-06-25 23:38) [11]


> vavan (25.06.03 20:03)


> возвращает запись опф, что это за ерунда, база оракловая.

Так и должно быт :)

Правильное решение
> Соловьев © (25.06.03 11:52)



 
sniknik ©   (2003-06-26 02:29) [12]

есть аналог MSSQL/Access функции Len в Oracle?
тогда так
Select Max(Len(MyColumn)) from MyTable
> получить самую длинную строку текста (в смысле максимальную длинну в символах)

у Соловьев © (25.06.03 11:52) длинна нужная для отображения строки, при текуших установках шрифта. и толко для отображаемых в текущий момент (видимых в гриде).
кстати еще и перерисовыватся будет по 2 раза.



 
roottim   (2003-06-26 08:29) [13]

есть
length(xxx)


 
SergeyKatruk ©   (2003-06-27 10:23) [14]


Как ни крути, а ширина колонки будет отображаться правильно только если шрифт фиксированной ширины (Courier, Terminal...).

Arial и Times New Roman - не фиксированы.

Я в таком же случае так и не нашол хорошего решения и поэтому просто ширину ячейки пишу в INI-шку на выходе, а на входе ставлю.



Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
8-67930
avn
2003-03-29 18:31
2003.07.21
Масштабирование окна показа AVI-файла


1-67842
Fotog
2003-07-07 19:07
2003.07.21
сервисы


14-67975
me
2003-07-07 00:26
2003.07.21
алкоголь


14-67993
Lary King
2003-07-03 21:47
2003.07.21
Оплата за показы банеров


8-67921
KAV
2003-04-01 17:36
2003.07.21
Повёрнутый элипс