Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2010, 19:23   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию проблема с печатью!принтер HP отдает пустой лист а samsung печатает как нужно!

всем привет!вот процедура печати

Код:
procedure Tmesform.Button1Click(Sender: TObject);
 var
 X1,X2,Y1,Y2:Integer;
 PointsX,PointsY:double;
 PrintDlg:TPrintDialog;
begin
  // Создаю и отображаю на экране стандартное окно печати
 PrintDlg:=TPrintDialog.Create(Owner);
 if PrintDlg.Execute then
  begin
  //Начинаю новый документ
   Printer.BeginDoc;
   Printer.Canvas.Refresh;
 //Получаю информацию о разрешении принтера
   PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/80;
   PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/80;
 //Расчитываю размеры изображения
   X1:=round((Printer.PageWidth - mesform.Panel1.Width*PointsX)/2);
   Y1:=round((Printer.PageHeight - mesform.Panel1.Height*PointsY)/2);
   X2:=round(X1+mesform.Panel1.Width*PointsX);
   Y2:=round(Y1+mesform.Panel1.Height*PointsY);
  //Вывод изображения на печать
Printer.Canvas.CopyRect(Rect(X1,Y1,X2,Y2),mesform.Canvas,Rect(0,0,mesform.Panel1.Width,mesform.Panel1.Height));
   Printer.EndDoc;
  end;
 //Уничтожаю созданное окно печати
 PrintDlg.Free;
end;
но когда я тестировал прогу на принтере HP то он выдает пустой лист,потом проверил на самсунге и вроде он все печатает,но и там посередине текста появляется белая пустая область,которой на форме у меня нет,вообще как такое может быть?заранее благодарю и ставлю +
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 15.07.2010, 19:18   #2
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

почему мне никто не помогает?я что задаю слишком сложные вопросы?
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 15.07.2010, 19:53   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может потому что никто с подобным не сталкивался?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.07.2010, 08:44   #4
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Проверял в отладчике что попадает в PointsX и PointsY ?
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 16.07.2010, 10:47   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
betirsolt
У меня твой код вообше ни на одном принтере не рисует.
Особо не вникал, но может помогут:
http://www.delphiworld.narod.ru/base/print_form.html
http://www.delphiworld.narod.ru/base/print_form2.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2010, 19:01   #6
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Korben5E Посмотреть сообщение
Проверял в отладчике что попадает в PointsX и PointsY ?
если выбрать вместо принтера Microsoft Office Document Image Writer Driver то он все сохраняет в файл как нужно,и оттуда уже можно и на печать,да и на самсунге работает,я думаю может мне не как рисунок распечатывать а в текстовом режиме работать с принтером,может получиться тогда
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 16.07.2010, 19:02   #7
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
У меня твой код вообше ни на одном принтере не рисует.
Особо не вникал, но может помогут:
http://www.delphiworld.narod.ru/base/print_form.html
http://www.delphiworld.narod.ru/base/print_form2.html
слишком сложно там для такой простой вещи как печать))
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 19.07.2010, 19:26   #8
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

вобщем ребята переделал я все
Код:
procedure Tmesform.Button1Click(Sender: TObject);
Var
f:TextFile;
i:Integer;
Begin
AssignPrn(f);
Printer.Canvas.Font.Size:=14;
Printer.Canvas.Font.Name:='Arial';
Rewrite(f);
if memo1.Visible=true then
begin
for i:=0 to memo1.Lines.Count-1 do
writeln(f,Memo1.Lines[i]);
CloseFile(f);
end;
так намного красивее и легче,вопрос решен,всем спасибо
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принтер Samsung ML 1640 РаТи Компьютерное железо 0 26.02.2010 11:10
Очень медленно печатает принтер Samsung ML 3561ND >>arty<< Компьютерное железо 0 30.07.2009 17:00
принтер криво печатает текст SKS Компьютерное железо 2 23.04.2009 16:54
Как узнать какие данные в данный момент печатает принтер? progan Общие вопросы Delphi 0 24.12.2008 09:34
не печатает принтер!!!! ronich Операционные системы общие вопросы 5 22.11.2007 08:52