C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
QuickRep1->Print() — не работает конструкция, как работать с Qreport
Parasit
Отправлено: 11.02.2007, 14:38


Дежурный стрелочник

Группа: Участник
Сообщений: 68



У меня ничего не получается распечатать с Qreport
Я поставил QuickRep1 на форму на неё сверху расположил
QRMemo1 и конструкция не робит
после неё QuickRep1->Print(); на виртуальный принт даже
задание на пинт не идет

что я зделал не так??
nawok78
Отправлено: 12.02.2007, 09:10


Станционный диспетчер

Группа: Участник
Сообщений: 115



к TDataSet подключил?
у QRMemo1 указал DataSet и DataField&
TDataSet сделал активным?
Книжку по билдеру читал? есть утебя?
Termi_uc
Отправлено: 12.02.2007, 19:50


Дежурный стрелочник

Группа: Участник
Сообщений: 61



Я сильно подозреваю, что ты забыл расположить на QuickRep1 хоть один Банд (Band), а без них TQuickRep печатать не умеет.

Вообще правильно распологать TQuickRep не на форме, а делать форму типа TQuickRep. Это File -> New -> Other -> Report. Делаеш хоть один банд и вызываеш свой отчёт QuickRep1->Preview(); Там будут все необходимые кнопки, в том числе и печать.

Вот тебе примерчиг.

User Attached Image Скачать файл
QuickRep1.zip


Parasit
Отправлено: 13.02.2007, 00:00


Дежурный стрелочник

Группа: Участник
Сообщений: 68



QUOTE (nawok78 @ 12.02.2007, 09:10)
к TDataSet подключил?
у QRMemo1 указал DataSet и DataField&
TDataSet сделал активным?
Книжку по билдеру читал? есть утебя?

Книги есть 8 шт насчитал. Неповерете и местный ФАК уже перекопал
ничего внятного. Новичок ведь smile.gif


Cобственно тогда вопрос:

Дата сет я поставлю в нем нужно чтонибудь указывать нет?
nawok78
Отправлено: 13.02.2007, 10:45


Станционный диспетчер

Группа: Участник
Сообщений: 115



Есть таблица в БД
к ней доступ обеспечивается через потомков TDataSet

есть форма с TQreport
на TQReport лежит TQRMemo
у TQRMemo есть поля
DataSet и DataField
DataSet должно быть подключено к твоему объекту-потомку TDataSet (TTable, TQuery, TADOQuery,...) поле Active этого TDataSet должно быть true;
в DataField указываешь поле таблицы
делаешь предварительный посмотр — все должно быть
Termi_uc
Отправлено: 13.02.2007, 15:50


Дежурный стрелочник

Группа: Участник
Сообщений: 61



QUOTE (Parasit @ 13.02.2007, 00:00)
Книги есть 8 шт насчитал. Неповерете и местный ФАК уже перекопал ничего внятного. Новичок ведь smile.gif

Cобственно тогда вопрос:

Дата сет я поставлю  в нем нужно чтонибудь указывать нет?


Ты скажи, ЧТО тебе конкретно распечатывать нужно: таблицы баз данных, рисунки, снимок формы, просто некий текст из TEdit или что-то другое.
Прищлю примерчик если скажеш ЧТО тебе надо.
Parasit
Отправлено: 13.02.2007, 22:08


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Просто из RichEDit1

Надо распечатать
nawok78
Отправлено: 14.02.2007, 08:07


Станционный диспетчер

Группа: Участник
Сообщений: 115



Из Richedit1?
А причем тут QReport?

RichEdit1->Print();
Termi_uc
Отправлено: 14.02.2007, 17:18


Дежурный стрелочник

Группа: Участник
Сообщений: 61



Я бы даже сказал

RichEdit1->Print("МЛЯ");
т.к. параметр AnsiString обязателен.

А вообще не парься, всё, что тебе нужно находится в папке
CBuilder6\Examples\Apps\RichEdit
Parasit
Отправлено: 15.02.2007, 08:57


Дежурный стрелочник

Группа: Участник
Сообщений: 68



RichEdit1->Print();

ненаю самое первое в голову пришло
поставил
проверил
все принтера в одну строку печатают!
Parasit
Отправлено: 18.02.2007, 11:06


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Termi_uc

Можешь пояснить кое что

SetWindowLong(Button1->Handle,GWL_STYLE,GetWindowLong(Button1->Handle,GWL_STYLE)|BS_MULTILINE);
SetWindowLong(Button2->Handle,GWL_STYLE,GetWindowLong(Button1->Handle,GWL_STYLE)|BS_MULTILINE);
// Button1->Caption="a\nlot\nof\nstrings";


<- для чего ? и для чего это

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TRect r1,r2;
r1 = Rect(Left+Width/2,Top+Height/2,Left+Width/2,Top+Height/2);
r2 = BoundsRect;
DrawAnimatedRects(Handle,IDANI_CAPTION,&r1,&r2);
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TRect r1,r2;
r1 = Rect(Left+Width/2,Top+Height/2,Left+Width/2,Top+Height/2);
r2 = BoundsRect;
DrawAnimatedRects(Handle,IDANI_CAPTION,&r2,&r1);
}




И самое то что будет если в поле Кмемо информации будет больше , чем может поместиться на 1 листе бумаги А4,
будет ли напечатана 2 страница
Termi_uc
Отправлено: 19.02.2007, 17:37


Дежурный стрелочник

Группа: Участник
Сообщений: 61



QUOTE (Parasit @ 18.02.2007, 11:06)
Termi_uc

Можешь пояснить кое что

SetWindowLong(Button1->Handle,GWL_STYLE,GetWindowLong(Button1->Handle,GWL_STYLE)|BS_MULTILINE);
SetWindowLong(Button2->Handle,GWL_STYLE,GetWindowLong(Button1->Handle,GWL_STYLE)|BS_MULTILINE);
// Button1->Caption="a\nlot\nof\nstrings";


<- для чего ? и для чего это

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TRect r1,r2;
r1 = Rect(Left+Width/2,Top+Height/2,Left+Width/2,Top+Height/2);
r2 = BoundsRect;
DrawAnimatedRects(Handle,IDANI_CAPTION,&r1,&r2);        
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TRect r1,r2;
r1 = Rect(Left+Width/2,Top+Height/2,Left+Width/2,Top+Height/2);
r2 = BoundsRect;
DrawAnimatedRects(Handle,IDANI_CAPTION,&r2,&r1);  
}

Ну, это прикол yu.gif . Просто, подумал — может пригодится хорошему человеку...
CODE

SetWindowLong(Button1->Handle,GWL_STYLE,GetWindowLong(Button1->Handle,GWL_STYLE)|BS_MULTILINE);

Устанавливает текст в несколько строк для TButton.
CODE
DrawAnimatedRects(Handle,IDANI_CAPTION,&r1,&r2);

Какбы раскрывает окно из середины.
QUOTE (Parasit @ 18.02.2007, 11:06)

И самое то что будет если в поле Кмемо информации будет больше , чем может поместиться на 1 листе бумаги А4,
будет ли напечатана 2 страница

Будет. Но КАК она будет напечатана (всмисли форматирование, тьфу, вообщем, чтоб начало навой страницы не попадало на предыдущюю, бли я надеюсь панятно излагаю?) зависит от програмиста.

Ты можеш печатать из QuickReport'а biggrin.gif . Я же тебе примерчиг прислал...
Parasit
Отправлено: 21.02.2007, 10:36


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Спасибо щас всё пережую пойму (надеюсь biggrin.gif )

Вот просьба приведи примерчиг с вариантом
что если на первую стр-цу непоместилось
переходит на вторую

За предыдущий примерчиг огромное спасибо
Termi_uc
Отправлено: 21.02.2007, 16:40


Дежурный стрелочник

Группа: Участник
Сообщений: 61



Смотри CBuilder6\Examples\Apps\RichEdit
Parasit
Отправлено: 22.02.2007, 11:22


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Всё таки ктонибудь примерчиг скинет как с кррепорт распечатать вторую страницу если на первой не уместилось пожалуйста
AVC
Отправлено: 22.02.2007, 12:00


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (Parasit @ 22.02.2007, 10:22)
Всё таки ктонибудь примерчиг скинет как с кррепорт распечатать вторую страницу если на первой не уместилось пожалуйста

Страницы вниз — автоматически (если правильно поставить своства QRLabel и т.д. AutoSize / AutoStrech)

Страницы вправо — простым способом решения нет.

Вернуться в Вопросы программирования в C++Builder