![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Lonley |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
Привет
вот бьюсь над формированием отчета из Memo вот надо так: ====================== | 3 |3333 | 3 | ====================== | gg | gg | ggg | | 4 | 4 | 4 | | 77 |______|______| | | | | | | | | , а получается так: ===================== | 3 |3333 | 3 | почемуто криво менял шрифиы Char Set но тут промблема с кодировкой ===================== на экране по русски а на принтере в БРЕДЕ | gg | gg | ggg | подскажите как от этого избавится | 4 | 4 | 4 __| | 77| ___- |_____ | | | | ____ | | | | | ========================= У Вас почему-то пробелы съедаются Это сообщение отредактировал(а) Lonley - 29.10.2003, 18:48 -------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Lonley Ты покажи как ты это делаешь, может у тебя в коде ошибка.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| cot |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 4.6.2003 Репутация: нет Всего: нет |
Var Y,dY,k: integer;
begin try if PrintDialog1.Execute then begin if Memo1.Lines.Count=0 then Exit; Screen.Cursor:=crHourGlass; with Printer do begin beginDoc; with Printer.Canvas do begin Font:=Memo1.Font; dY:=TextHeight('1'); y:=2*dY; for k:=0 to Memo1.Lines.Count-1 do begin TextOut(0,Y,Memo1.Lines[k]); inc(y,dy); if PageHeight-Y<2*dY then begin NewPage; TextOut(0,0,'c.'+IntToStr(PageNumber)); Y:=2*dY end; end; end; EndDoc; end; Screen.Cursor:= crDefault; end except on EPrinter do MessageDlg ('Принтер не включен, или бумаги в нем нет.',mtError,[mbOK],0); end; end; Всю дорогу пользуюсь никогда не было проблем. |
|||
|
||||
| Lonley |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
procedure PrintStrings(Strings: TLMDMemoStrings); Var Prn: TextFile; i: word; begin AssignPrn(Prn); try Rewrite(Prn); try Printer.Canvas.Font:=Form1.Memo1.Font; for i := 0 to Strings.Count - 1 do writeln(Prn, Strings.Strings[i]); finally CloseFile(Prn); end; except on EInOutError do MessageDlg('Ошибка печати текста.', mtError, [mbOk], 0); end; end; procedure TForm1.Button1Click(Sender: TObject); begin //ghh PrintStrings(Memo1.Lines); end; end. =================== Делаю так взял из форума непомню откуда =================== Самое забавное что когда копируешь текст из MEMO в блокнот то все встает нормально и шрифт и выравнивание =================== -------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
А может лучше пользоваться QReport-ом?
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Lonley Попробуй то, что дал cot.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Lonley |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
-=-=-=-= Оке Я попробую, ---- но Я собственно выкрутился из положения путем сохранения его в файл и вызовом ассоциированой с TXT файлами прогой -=-=-=-=-= -------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Есть два принципиально разных способа вывода на печать:
1) writeln(Prn, Strings.Strings[i]); - Печатает на принтер в текстовой моде 2) TextOut(0,Y,Memo1.Lines[k]); - Печатает на принтер в графике Большинство современных принтеров в текстовом режиме работают коряво (Если вообще работает). Кстати, я вообще удивлен что при работе с принтером в текстовом режиме у Вас используется установка шрифта принтера
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Lonley |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
-=-= Это остатки от прошлого кода просто можно было - то читать настройки принтера и его харки и потом уже регилировать печать =-= Но ето долго и мне не нужна графика, а просто печать колоночек и строчек с посчитаными данными =-=- -------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
||||
|
|||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Если надо выводить только цифры (т.е. нет проблем с кодировкой) то можно попробывать и через Writeln(Prn) Числа выводить в форматированом виде (Используя ":" ) и/или Tab (#9) По умолчанию выравнивает на столбцы кратные 8 символам. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Lonley |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
==== Ну естественнно с названиями данных например: =============== |№|Тип|Количество| =============== Вот код генератора можно в файл можно в Memo тут создано в файл до этого Я делал в Memo, но...
Это сообщение отредактировал(а) Lonley - 2.11.2003, 18:25 -------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
1)
Вместо Case length(s) of + куча строчек, наверное проще сделать так: if length(s) = 0 then s1:='н/д' else s1:=copy('________',1,8-length(s))+s; /*В кавычках 8 пробелов*/ 2) #32+#32+#32+#32... Можно записывать без знаков "+" - мелочь, а приятно. Но я бы использовал #9 - это еще красивее. Ведь тогда Вы должны следить только за тем, чтобы общий размер поля не выходил за 8 символов (или 16,24 ... как Вы выберите) т.е. тогда вместо п1) и п2) получится компактная запись типа if length(s) = 0 then s1:='н/д' else s1:=s; writeln(fil,#9'|'#9,Str_Col:7,#9'|',s1,#9'|'); 3) Если Ваш принтер неправильно поддерживает печать кирилицы в текстовом режиме то все остальное не имеет смысла. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |