гость |
Отправлено: 01.08.2006, 14:22 |
|
Не зарегистрирован
|
Эдравствуйте.
В статьях на этом сайте нашел примеры как сделать отчеты, как сделать текстовый редактор. Можно с помощью стандартных диалогов открывать, сохранять текстовые файлы, но не описана печать.
Подскажите где можно почитать такой же подробный пример использования стандартного диалога вывода на печать(если не лень может и сам кто-нибудь напишет).
Зарание спасибо. |
|
гость |
Отправлено: 01.08.2006, 16:45 |
|
Не зарегистрирован
|
подскажите please хорошую книгу по builder 6 C++
с примерами |
|
AVC |
Отправлено: 01.08.2006, 16:52 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Смотря что надо печатать. Просто файл, картинку или построенный отчет по БД или ... |
|
Evil_Smile |
Отправлено: 01.08.2006, 19:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 57
|
книга архангельского 17 метров
в формате djvu
http://www.dago.506.com1.ru/books/Arhangel...elckiy_BCB6.zip
а вот ридер
http://li.ru/go?www.3dnews.ru/files/pub/of...jView-0.4.1.exe
|
|
Guest |
Отправлено: 02.08.2006, 10:47 |
|
Не зарегистрирован
|
QUOTE (AVC @ 01/08/2006, 16:52) | Смотря что надо печатать. Просто файл, картинку или построенный отчет по БД или ... |
нужно печатать, то что находится в Memo, исползую следующий код:
if (PrintDialog1->Execute())
{
Printer()->BeginDoc();
for (int i=0; iMemo1->Lines->Count; i++)
{
Printer()->Canvas->TextOut(20, 20*i, Form2->Memo1->Lines->Strings[i]);
}
Printer()->EndDoc();
}
Все печатает, только очень криво.подбираю числа (здесь 20).
и если текст не влезает на один лист, а при нормальном виде он не влезает, то второго листа принтер не требует:(
|
|
Guest |
Отправлено: 02.08.2006, 10:58 |
|
Не зарегистрирован
|
спасибо за книгу |
|
Guest |
Отправлено: 02.08.2006, 12:54 |
|
Не зарегистрирован
|
Простая печать строк (режим эмуляции дос печати, так печатает FAR по Alt F5)
CODE |
bool __fastcall TF_DosPrint::Print (void)
{
AnsiString prnname = системное_имя_принтера;
AnsiString docname = название_документа (для красоты);
if (prnname.IsEmpty()) return false;
AnsiString text = печатаемый_текст
if (text.IsEmpty()) return false;
DOC_INFO_1 doc_info_1;
doc_info_1.pDocName = docname.c_str();
doc_info_1.pOutputFile = NULL;
doc_info_1.pDatatype = NULL;
HANDLE phandle = 0;
DWORD tcou = text.Length();
DWORD pcou = 0;
bool ret = true;
try {
if (!OpenPrinter(prnname.c_str(), &phandle, NULL))
throw Exception("OpenPrinter");
if (!StartDocPrinter(phandle, 1, (LPBYTE)(&doc_info_1)))
throw Exception("StartDocPrinter");
if (!WritePrinter (phandle, text.c_str(), tcou, &pcou))
throw Exception("WritePrinter");
if (!EndDocPrinter(phandle))
throw Exception("EndDocPrinter");
} // try
catch (Exception &xcp)
{ text = AnsiString("Ошибка при вызове функции ") + xcp.Message;
ShowMessage(text);
ret = false;
}
if (phandle) ClosePrinter(phandle);
return ret;
}
| |
|
Guest |
Отправлено: 04.08.2006, 12:13 |
|
Не зарегистрирован
|
а стандартныи диалог вывода на печать (PrintDialog1) не позволяет производить распечатку некольких страниц? |
|
AVC |
Отправлено: 04.08.2006, 13:17 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Позволяет, если вы это организуете.
Посмотрите справку по PrintDialog->Execute(). |
|
Guest |
Отправлено: 04.08.2006, 23:58 |
|
Не зарегистрирован
|
все так, с англииским туго. может кто знает, где скачать русскии help?
спасибо за информацию, книга отличная. |
|