Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать ОТ ЦЕНТРА 
:(
    Опции темы
Rutti
Дата 25.9.2005, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Печатаю текст:
Код

Printer *Prn = Printer();
Prn->BeginDoc();
Prn->Canvas->Font->Name="Times New Roman";
Prn->Canvas->Font->Style=TFontStyles() <<fsBold;
Prn->Canvas->Font->Size=12;
Prn->Canvas->TextOut(650, 20, "qweqweqweqweqweq");
Prn->Canvas->TextOut(450, 300, "asdasdasdasda");
Prn->Canvas->Font->Style=TFontStyles();

и т.д..

Текст печатается от указанной точки справа на лево.
А как сделать, чтобы он печатался от указанного места в обе стороны (раздвигался пропорционально одновременно и в право и влево как в редакторах это делается)?
PM MAIL   Вверх
maxim1000
Дата 25.9.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



сдвигать точку начала печати влево на половину длины текста...


--------------------
qqq
PM WWW   Вверх
Rutti
Дата 30.9.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Цитата(maxim1000 @ 25.9.2005, 12:12)
сдвигать точку начала печати влево на половину длины текста...


Спасибо!

Я так уже делал. Не всегда корректно получается результат.
Нужно что-то типа DrawText - то что доктор прописал, но как это вывести на печать?
PM MAIL   Вверх
maxim1000
Дата 30.9.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
Я так уже делал. Не всегда корректно получается результат

значит, надо делать корректно smile
если серьезно, то опиши, как делал, и в чем состояла некорректность...
Цитата
Нужно что-то типа DrawText - то что доктор прописал, но как это вывести на печать?

на печать в любом случае выводится статическая картинка
т.е. есть два этапа:
1. подготовка картинки
2. вывод на печать
что-либо сдвигаться может только на этае предпросмотра, который является частью первого этапа

что касается способа вывода на печать - это совсем другой вопрос, который зависит от ОС и средств разработки...


--------------------
qqq
PM WWW   Вверх
Mad
Дата 30.9.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(maxim1000 @ 30.9.2005, 20:59)
что касается способа вывода на печать - это совсем другой вопрос, который зависит от ОС и средств разработки...


Цитата(Rutti @ 30.9.2005, 17:27)
Нужно что-то типа DrawText


Rutti
судя по исходнику который ты привел, ты используеш какуюто сторонею либу дл яработы с принтером. Если будеш юзать только MFC или только WinAPI то можеш смело вызывать и DrawText для вывода на принтер.

и скорей всего в этом класе (Printer) который ты узаеш, всеравно гдето храниться hDC контекста принтера, который можно использовать для вызова DrawText


--------------------
user posted image
PM MAIL   Вверх
Rutti
Дата 1.10.2005, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Mad

Так я не понял: можно напечатать текст, отформатированный как мне надо с помощью DrawText? А как? У меня получается только форматировать текст с помощью DrawText. А вывод на печать с помощью Printer() текста из DrawText - не получается.

[/b]maxim1000[b]
Цитата

на печать в любом случае выводится статическая картинка
т.е. есть два этапа:
1. подготовка картинки
2. вывод на печать


Как же мне на этапе предпросмотра организовать страницу текста с форматированием?

Это сообщение отредактировал(а) Rutti - 18.10.2005, 17:20
PM MAIL   Вверх
Rutti
Дата 29.10.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



all

Почти разобрался. Все большое спасибо. Осталось только разобраться с "почти".

Код

AnsiString VD = "", VM = "", VY = "", StartD="", StartM="", StartY="", EndD="", EndM="", EndY="", ChisloD="", ChisloM="", ChisloY="";

DateTimeToString(VD, "dd" ,DateTimePicker1->Date);
DateTimeToString(VM, "mm" ,DateTimePicker1->Date);
DateTimeToString(VY, "yyyy" ,DateTimePicker1->Date);

DateTimeToString(StartD, "dd" ,DateTimePicker2->Date);
DateTimeToString(StartM, "mm" ,DateTimePicker2->Date);
DateTimeToString(StartY, "yyyy" ,DateTimePicker2->Date);

DateTimeToString(EndD, "dd" ,DateTimePicker3->Date);
DateTimeToString(EndM, "mm" ,DateTimePicker3->Date);
DateTimeToString(EndY, "yyyy" ,DateTimePicker3->Date);

r=Rect(XCoordinate, YCoorfinate+350, CurPrinter->PageWidth,CurPrinter->PageHeight);

AnsiString TextRaporta=AnsiString("\tАаааа бббббббббббб вввввввв")+VD+" "+Months[VM.ToInt()-1]+" "+VY+AnsiString(" гггг зз жжжжж")+ComboBox1->Text+AnsiString(" и ")+StartD+" "+Months[StartM.ToInt()-1]+StartY+" "+AnsiString(" кккк лл ")+EndD+" "+Months[EndM.ToInt()-1]+" "+EndY+AnsiString(" оооо.");
                DrawText(CurPrinter->Canvas->Handle,
                         TR.c_str(),
                         TR.Length(),
                         &r,
                         DT_EXPANDTABS|DT_WORDBREAK | DT_LEFT);


Количество букв в словах текста соответсвует оригиналу. Так вот если в ComboBox'е длинный текст, то при печати он выходит за границы листа на 5-7 символов. При короком тесте - всё нормально.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.