![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Если спрятать колонку в DBGrid, то она исчезнет из отчета... [D5]
iat © (2004-10-19 18:54:00)Создаю динамический отчет на основании информации DBGrid'a.
При создании использую свойство TColumn, т.е. Column.Title.Caption для заголовка и Column.FieldName для данных.
Все печатается нормально, но если одной из колонок задать Visible := false, то из отчета она пропадет, хотя и добавляется при создании.
Мне надо, что бы в отчете были и те колонки, которые не показаны (хотя и существуют) в DBGrid.
Как можно решить проблемку.
Vlad (2004-10-21 20:03:00) [1]
> Тогда встречный вопрос: как преобразовать ширину в символах
> в ширину в пикселях.
см. ф-цию GetTextMetrics
iat (2004-10-21 19:12:00) [2]я понял. тут какой прикол получается. при содздании динамического отчета также неоходимо задавать ширину поля (width). вот я ее и брал из ширины столбца. А когда столбец не видим его ширина становится равной -1 !!!. Следовательно, в отчете тоже самое.
Вы скажете: "так что тебе мешает брать ширину из полей датасета?". Дело в том, то ширина в датасете (DisplayWidth) идет не в пикселях, а в символах (Specifies the number of characters that should be used to display a field’s value by a cooperating data-aware control).
Тогда встречный вопрос: как преобразовать ширину в символах в ширину в пикселях.
-=SS=- (2004-10-20 12:02:00) [3]
DBGrid1.Fields[1].Visible:=False
Попробуй это
sniknik (2004-10-19 20:15:00) [4]Ega23 © (19.10.04 19:17) [2]
а ты посмотри внимательнее, грид используется только для ссылки на датасет .. и если ограничение на колонках только у грида то рекордсет то вернет все поля (столбцы если смотреть в гриде, даже если они в нем не видны %о).
Ega23 (2004-10-19 19:17:00) [5]Vir (19.10.04 19:15) [1]
Вопрос не о наборе филдов в датасете, а о наборе столбцов в дбгриде.
Vir (2004-10-19 19:15:00) [6]
for i:=0 to DBGrid.DataSource.DataSet.FieldCount-1
f_name:=DBGrid.DataSource.DataSet.FieldList[i].FieldName;
.......