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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2010, 16:49   #1
mineralkaaa
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию Календарь

Народ,помогите пожалуйста,есть программа-генератор календаря(вложена),но она выводит этот календарь на экран,а мне нужно чтоб его можно было выводить на печать!!помогите кто может.
Вложения
Тип файла: rar calendar_gen.rar (327.3 Кб, 17 просмотров)
mineralkaaa вне форума Ответить с цитированием
Старый 10.09.2010, 17:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в процедуре, которая висит на клике по кнопке SpeedButton1
(SpeedButton1Click)
в конце преобразования полученный файл сохраняется в каталог windows c именем MonPapierPeint.bmp:
b.SaveToFile(PapierPeint);
достаточно весь код, который идёт в данной процедуре после этого (до оператора end заменить на код, который распечатает полученный BMP файл и всё.


к сожалению, никогда не работал с TPrinter напрямую.
вот код, взятый из DelphiWorld

Как то работает (хотя, мне показалось, что качество картинки не очень хорошее. Но это из-за алгоритма формирования календаря).
Печать идёт на принтер по умолчанию.

Код:
// в начале  процедуры добавить описание переменных (выделено зелёным)
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
    ScaleX, ScaleY: Integer;
    R: TRect;


// в конце процедуры SpeedButton1Click весь код от b.SaveToFile и до end
// заменить на нижприведённый

     // b.SaveToFile(PapierPeint);
     image2.Picture.Bitmap.Width:=b.Width;
     image2.Picture.Bitmap.Height:=b.Height;
     image2.Picture.Bitmap.Assign(b);

    Printer.BeginDoc; // **
    with Printer do
      try
        ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
        ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
        R := Rect(0, 0, image2.Picture.Width * ScaleX,
          image2.Picture.Height * ScaleY);
        Canvas.StretchDraw(R, image2.Picture.Graphic); // **
      finally
        EndDoc; // **
      end;

(*     Registry := TRegIniFile.Create('Control Panel');
     Registry.WriteString('desktop', 'WallPaper', PapierPeint);
     Registry.Free;
     NotifyChangementPapierpeint ;
     sendmessage(handle,wm_wininichange,0,0);
     SmoothResize(b,image2.Width,image2.Height);
     image2.Picture.Bitmap.Width:=b.Width;
     image2.Picture.Bitmap.Height:=b.Height;
     image2.Picture.Bitmap.Assign(b);
*)
     b.Free;

Последний раз редактировалось Serge_Bliznykov; 10.09.2010 в 17:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.09.2010, 19:48   #3
mineralkaaa
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию

Спасибо,Вам,огромное,но,если можно,скачайте,пожалуйста,мою программу и вставте туда то что нужно.Ато я правда ничего не понимаю в этом!!! Пожалуйста-пожалуйста-пожалуйста-пожалуйста!!!!!!
mineralkaaa вне форума Ответить с цитированием
Старый 10.09.2010, 20:23   #4
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
Printer.BeginDoc;
-эта строчка не пускает(может потому-что у мя принтера нет?)
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 10.09.2010, 23:36   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Printer.BeginDoc;
-эта строчка не пускает(может потому-что у мя принтера нет?)
это я забыл сказать, что в Uses надо дописать модуль Printers

Хотя можно было на слове Printer нажать F1 и тогда посмотреть, в каком модуле это описано. Это я на будущее...


mineralkaaa, да не вопрос... вот, во вложении...
Вложения
Тип файла: rar calendar.rar (306.4 Кб, 12 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.09.2010, 01:28   #6
mineralkaaa
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию

Ой!!Большущее спасибо!!!!!!!А скажите,а можно еще сделать так чтоб можно было посмотреть сначала на экране то что будет печататься?!?! (извините,что так надоедаю).Еще раз БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ!!
mineralkaaa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Календарь seriousMalish JavaScript, Ajax 2 12.05.2010 05:01
Календарь krikaved Общие вопросы Delphi 2 25.03.2010 22:58
Календарь в VS Faridik Общие вопросы .NET 0 18.02.2010 09:39
Календарь ruavia3 Microsoft Office Excel 6 16.04.2009 15:32