Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2

Печать DBGrid - Как определить размер ячейки в TDBGrid

19.01.2011, 19:52. Показов 3593. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо распечатать DBGrid, потратил 2 дня на поиск и установку компонентов для отчетов для bcb 2009, и все БЕСПОЛЕЗНО!!!
Пытался сделать как описано здесь Печать поля Memo и RichEdit и здесь Печать данних с GroupBox
не получается потому что незнаю как определить размер ячейки в TDBGrid
C++
1
2
3
4
5
6
7
8
9
10
int x=40,y=40;
Printer()->BeginDoc();
Printer()->Canvas = DBGrid1->Canvas;
for (int i = 0; i < DBGrid1->Columns->Count; i++) {
    for (int i2 = 0; i2 < DBGrid1->DataSource->DataSet->RecordCount; i2++) {
 
        Printer()->Canvas->TextOut(x+DBGrid1->c;
    }
}
Printer()->EndDoc();
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2011, 19:52
Ответы с готовыми решениями:

Как изменить цвет ячейки TDBGrid в зависимости от текущего даты
Привет всем я чайник. помогите плиз! :wall:

Авто размер TDbGrid
Ребят в общем такой вопрос каким образом можно сделать так что бы когда изменяется размер окна программы то объект TDbgrid ...

Задачка по информатике. Тема: TDBGrid (APEX True DBGrid Pro 6.0)
HI ALL Не поможет ли кто в решении задачки: Имеется DataEnvironment1, к которой подключены текстовые поля, TDBGrid. Через...

9
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
24.01.2011, 18:33  [ТС]
разобрался, ну вот что собственно получилось в итоге
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
if (DBGrid1->DataSource->DataSet->RecordCount<1) {
    return;
}
  int x=300,y=200;
  TPrintDialog *printDialog = new TPrintDialog(this);
  if(printDialog->Execute())
 {
 Printer()->BeginDoc();
 Printer()->Canvas->Font->Size=10;
 Printer()->Canvas->Font->Pitch=fpFixed;
  DBGrid1->DataSource->DataSet->First();
  Printer()->Canvas->TextOut(x,y,"Отчет по дате посещений");
  y+=200;
   Printer()->Canvas->Font->Size=8;
  for (int i2 = 0; i2 < DBGrid1->Columns->Count; i2++) {
    Printer()->Canvas->TextOut(x,y,DBGrid1->Columns->Items[i2]->Title->Caption);
    x+=DBGrid1->Columns->Items[i2]->Width*6;
  }
     Printer()->Canvas->Font->Size=8;
   for (int i = 0; i < DBGrid1->DataSource->DataSet->RecordCount; i++) {
    for (int i2 = 0; i2 < DBGrid1->Columns->Count; i2++) {
        AnsiString text2,text= DBGrid1->DataSource->DataSet->FieldByName(DBGrid1->Columns->Items[i2]->FieldName)->AsAnsiString;
        int maxchar=50;
        if (i2==0) {
            Printer()->Canvas->Font->Style<<fsBold;
        }  else {
            Printer()->Canvas->Font->Style>>fsBold;
        }
        if (text.Length()>maxchar) {
            for (int i3 = 0; i3 < (text.Length()/maxchar+1); i3++)
            {
                text2=text.SubString((maxchar+1)*i3,maxchar);
                Printer()->Canvas->TextOut(x,y,text2);
                if (i3<(text.Length()/maxchar)) {
                 y+=200;
                }
            }
        } else {
            Printer()->Canvas->TextOut(x,y,text);
        }
 
        x+=DBGrid1->Columns->Items[i2]->Width*6;
    }
    y+=200;
    x=300;
    DBGrid1->DataSource->DataSet->Next();
    if (y>6700) {
     Printer()->NewPage();
     y=200;
    }
   }
 
 Printer()->EndDoc();
 }
1
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.01.2011, 23:58
[XandeR], а не проще это сделать в генераторе отчетов?
0
1 / 1 / 0
Регистрация: 03.03.2010
Сообщений: 19
13.04.2011, 14:29
Цитата Сообщение от [XandeR
;1313788]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if (DBGrid1->DataSource->DataSet->RecordCount<1) {
 return;
}
 int x=300,y=200;
 TPrintDialog *printDialog = new TPrintDialog(this);
 if(printDialog->Execute())
{
Printer()->BeginDoc();
Printer()->Canvas->Font->Size=10;
Printer()->Canvas->Font->Pitch=fpFixed;
 DBGrid1->DataSource->DataSet->First();
 Printer()->Canvas->TextOut(x,y,"Отчет по дате посещений");
 y+=200;
Printer()->Canvas->Font->Size=8;
 for (int i2 = 0; i2 < DBGrid1->Columns->Count; i2++) {
    Printer()->Canvas->TextOut(x,y,DBGrid1->Columns->Items[i2]->Title->Caption);
    x+=DBGrid1->Columns->Items[i2]->Width*6;
 }
Printer()->Canvas->Font->Size=8;
for (int i = 0; i < DBGrid1->DataSource->DataSet->RecordCount; i++) {
 for (int i2 = 0; i2 < DBGrid1->Columns->Count; i2++) {
 AnsiString text2,text= DBGrid1->DataSource->DataSet->FieldByName(DBGrid1->Columns->Items[i2]->FieldName)->AsAnsiString;
 int maxchar=50;
 if (i2==0) {
   Printer()->Canvas->Font->Style<<fsBold;
 }else {
  Printer()->Canvas->Font->Style>>fsBold;
}
 if (text.Length()>maxchar) {
   for (int i3 = 0; i3 < (text.Length()/maxchar+1); i3++)
   {
 text2=text.SubString((maxchar+1)*i3,maxc

Вот, попробовала код...выводит ошибку
C++
1
[C++ Error] Unit11.cpp(82): E2316 'AsAnsiString' is not a member of 'TField'
...что не так делаю?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
13.04.2011, 15:36
ИМХО, самое правильное решение - выгрузить содержимое сетки в Excel. При этом можно даже сохранить стиль, размер и шрифт колонок.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
14.04.2011, 22:35  [ТС]
В эксель долго, нужна печать напрямую
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
15.04.2011, 09:59
А что мешает "напрямую" напечатать из Экселя ?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
15.04.2011, 10:20
l_nrifonova, E2316 'AsAnsiString' is not a member of 'TField' - эта ошибка говорит о том, что вы используете метод, которого нет в классе, надо AsString... и пора бы уже изучать капризы IDE, в жизни пригодится, тем более ошибки более-менее понятные по смыслу
1
-1 / 0 / 2
Регистрация: 11.08.2014
Сообщений: 46
20.08.2014, 16:27
Из всего выше сказанного кажется, что вывод отчета напрямую через DBGrid оформить нельзя! Выходит, все через TQuickRep и т.д. А что делать тем, у кого нету данного компонента (C++ Builder xe)? Вернее он есть, но это все плод воображения, релиза и просто битого продукта((
Подскажите пожалуйста!
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
20.08.2014, 17:47
Цитата Сообщение от Hagk Посмотреть сообщение
Выходит, все через TQuickRep и т.д.
Вот именно, через "т.д." Если мне склероз не изменяет, то начиная с BCB6 повился редактор отчетов RAVE Report, а в Builder XE3 встроен FastReport 4.0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2014, 17:47
Помогаю со студенческими работами здесь

Сохранить как... и Печать ИЗ DBGrid
Прошу помочь описать программным кодом процесс сохранения и печати данных из таблицы. Есть таблица DBGrid, в которую из Access...

Вывод на печать DBGrid из TabSheet на печать в файл ворда
Здравствуйте, не могли бы помочь с выводом на печать? В делфи 10 подключена база и информация выводится в DBGrid на TabSheet. Необходимо...

Как вывести на печать содержимое DBGrid?
Добрый день! Подскажите пожалуйста как вывести на печать содержимое DBGrid. Printer.Print DBGrid1.Text - печатает только первую ячейку...

Как пустить на печать содержимое из DBGrid?
Please help... Как пустить на печать содержимое из DBGrid в Delphi 6?

Как заменить значение ячейки Dbgrid?
У меня есть таблица подключенная через Адотейбл и датасоурс к ДБгриду. Мне нужно проверить, если в 11 столбце имя поле которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru