Важная информация
Показано с 1 по 8 из 8

Тема: Печать из FPS и Лазарус... как так?

  1. #1 Печать из FPS и Лазарус... как так? 
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Подскажите кто знает, второй день туплю!
    Надо вывести на принтер, пользуясь канвой принтера, написал следующее:
    Код :
    uses Printers;
    ...................
    procedure TForm1.FPRTClick(Sender: TObject);
    begin
      try
        Printer.BeginDoc;
        //Printer.Canvas.TextOut(10,10,'Печатаем с помощью объекта Printer');
      finally
        Printer.EndDoc;
      end;
    end;
    Вроде тут нечему ломаться, но на первой же строке (Printer.BeginDoc) выводится ошибка:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Я уже не говорю о графическом выводе!
    Последний раз редактировалось Dimon012; 24.08.2012 в 04:33.
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Объект принтера инициализирован правильно? Ни в каких полях нет указателей, к которым происходит обращение, но указывающим не совсем туда, куда нужно? Также, EXTERNAL указывает на ошибку, вероятно вызванную какими-либо внешними причинами. Посмотрите, доступны ли все библиотеки принтера вашей программе, и полностью ли установлена среда разработки?
    Также, вот есть материал по этой ошибке:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Там указано, если я правильно понял, что некоторый класс исключений следует ловить явно, например так:
    on E: Exception do showmessage(pchar(Exception));

    О, вот, смотрите, нашел материал конкретно по вашей ошибке:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Там указано, что возможно это вызвано, как я и предполагал, не полной установкой компонента принтера для среды разработки.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    Dimon012 (24.08.2012), nik_1 (04.08.2014)

  4. #3  
    Профи Аватар для nik_1
    Регистрация
    03.08.2014
    Сообщений
    283
    Сказал(а) спасибо
    160
    Поблагодарили 145 раз(а) в 109 сообщениях
    Записей в блоге
    1
    unit unitmain1;

    {$mode objfpc}{$H+}

    interface

    uses
    Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
    Buttons, Printers, ExtCtrls;

    type

    { TForm1 }

    TForm1 = class(TForm)
    Button1: TButton;
    Label4: TLabel;
    Label5: TLabel;
    ListBox1: TListBox;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { private declarations }
    public
    { public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    // fill in the printer list
    Listbox1.Items.Assign(Printer.Printers);

    end;


    procedure TForm1.Button1Click(Sender: TObject);
    var X, Y, dx, dy, k: integer;
    begin
    if Listbox1.ItemIndex<0 then begin
    ShowMessage('Select a printer from the list');
    exit;
    end;

    // on a freshly retrieved printer list, either method could
    // be used to select a printer: SetPrinter or PrinterIndex
    //Printer.PrinterIndex := Listbox1.ItemIndex;
    Printer.SetPrinter(ListBox1.Items[Listbox1.ItemIndex]);
    Printer.Title := Caption;
    Printer.RawMode := {True;} false;
    Printer.BeginDoc;
    label4.Caption:='ширина страницы '+IntToStr(Printer.PageWidth);
    label5.Caption:='высота страницы '+IntToStr(Printer.PageHeight);

    printer.Canvas.font:=memo1.font; // шрифт должен быть не по умолчанию, а конкретный //например Arial 10
    dy:= printer.Canvas.TextHeight('1');
    y:=3*dy;
    x:= Printer.PageWidth div 15;
    for k:=0 to Memo1.Lines.Count-1 do
    begin
    printer.Canvas.TextOut(x, y, memo1.Lines[k]);
    inc(y,dy);
    end;
    Printer.EndDoc;

    end;
    end.
    Последний раз редактировалось nik_1; 07.12.2015 в 18:56.
    Ответить с цитированием  
     

  5. Пользователь сказал cпасибо:

    Dimon012 (06.08.2014)

  6. #4  
    Профи Аватар для nik_1
    Регистрация
    03.08.2014
    Сообщений
    283
    Сказал(а) спасибо
    160
    Поблагодарили 145 раз(а) в 109 сообщениях
    Записей в блоге
    1
    так же необходимо добавить ссылку на модуль printer4lararus
    проект\инспектор проекта\добавить\новая зависимость
    имя пакета: printer4lazarus - из списка
    Последний раз редактировалось nik_1; 07.12.2015 в 18:53.
    Ответить с цитированием  
     

  7. 3 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (21.10.2015), CfyCnfh (21.10.2015), Dimon012 (06.08.2014)

  8. #5  
    Новичок
    Регистрация
    21.10.2015
    Сообщений
    1
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от nik_1 Посмотреть сообщение
    так же необходимо добавить ссылку на модуль printer4lararus
    Вроде в прошлый раз пользовался принтом и не добавлял модуль через инспектор. А тут спасло. Спасибо тебе добрый человек
    Ещёб кто объяснил почему добавление через uses не сработало >_<
    Ответить с цитированием  
     

  9. #6  
    Профи Аватар для nik_1
    Регистрация
    03.08.2014
    Сообщений
    283
    Сказал(а) спасибо
    160
    Поблагодарили 145 раз(а) в 109 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от CfyCnfh Посмотреть сообщение
    Вроде в прошлый раз пользовался принтом и не добавлял модуль через инспектор. А тут спасло. Спасибо тебе добрый человек
    Ещёб кто объяснил почему добавление через uses не сработало >_<
    объяснение смотри на форуме лазаруса. там этот вопрос освещён.
    Ответить с цитированием  
     

  10. #7  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,911
    Сказал(а) спасибо
    1,841
    Поблагодарили 975 раз(а) в 833 сообщениях
    Записей в блоге
    1
    объяснение смотри на форуме лазаруса. там этот вопрос освещён.
    Было бы весьма неплохо, если бы он ещё и на нашем форуме был освещён.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  11. #8  
    Профи Аватар для nik_1
    Регистрация
    03.08.2014
    Сообщений
    283
    Сказал(а) спасибо
    160
    Поблагодарили 145 раз(а) в 109 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    Было бы весьма неплохо, если бы он ещё и на нашем форуме был освещён.
    Лучше чем на форуме лазаруса у меня осветить не получится. А в двух словах это сторонняя библиотека разработанная на си. По этому подключение только через инспектор проекта. Инспектор проекта позволят подключить сторонние библиотеки разработанные на других яп и ассемблере.
    Ответить с цитированием  
     

  12. Пользователь сказал cпасибо:

    >Quiet Snow< (08.12.2015)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •