Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посоветуйте плз компонент для печати [Delphi, Windows]


Dy1 ©   (2007-07-22 13:31:00) 

KOLPrint Богуслава
а) жутко глючит (КОЛнМЦК 2.71, Д7)
б) есть св-во "pdSelection" и др., соответствующие окна на диалоге не отображаются (а есть ли они вообще?)


Дмитрий К   (2007-07-23 08:59:00) [1]


> Dy1 ©   (23.07.07 07:57) [6]

Действительно. Жуть.
Я вот тут попробовал - диалог создается без проблем, даже печатается чего-то.
Но если у вас действительно такие глюки, стоит подумать об оптимизации обработки файлов в VCL.


Dy1   (2007-07-23 07:57:00) [2]

> > а) жутко глючит (КОЛнМЦК 2.71, Д7)
> В чем конкретно проявляется?

Тормозит, загружает проц до висюка (если ошибок в проге нет - на несколько секунд)...

> > б) есть св-во "pdSelection" и др., соответствующие окна
> > на диалоге не отображаются
> Создавать без pdPrinterSetup

В этом случае вырубается explorer.exe :-7


Дмитрий К   (2007-07-23 05:42:00) [3]

Если нужны диалоги, то без компонент Брандиса не обойтись.

> а) жутко глючит (КОЛнМЦК 2.71, Д7)

В чем конкретно проявляется?

> б) есть св-во "pdSelection" и др., соответствующие окна
> на диалоге не отображаются (а есть ли они вообще?)

Создавать без pdPrinterSetup


Dy1   (2007-07-23 00:32:00) [4]

pn := Printer;
 try
   pn.BeginDoc;
   pn.EndDoc;
 finally
   pn.Free;
 end;

Освобождение освобождённого объекта. Если без Free, то небольшая утечка памяти в KOLMHPrinters.pas

ТЗ: Есть столбик строк (в Memo) длиной не больше 30 символов каждая. Нужно его распечатать в 2 столбика на странице. Нужен диалог выбора принтера со всеми стандартными (?) опциями и желательно превью.
До сих пор я использовал VCL-ный компонент. И если KOLMHPrinters не оправдает моих надежд, придётся доделывать прогу на VCL, а она обрабатывает файлы медленнее в 100-200 раз (странный разброс, но это так) :(


Дмитрий К   (2007-07-22 19:22:00) [5]


> Есть ли демка?

Не знаю, правильно написал или нет, но у меня работает.

Печатает картинку во всю страницу на принтер по умолчанию:
program testMHPrinters;

uses
 KOL, KOLMHPrinters;

type
 PForm1 = ^TForm1;
 TForm1 = object(TObj)
   form, btn: pcontrol;
   osd: POpenSaveDialog;
   procedure DoClick(Sender: PObj);
 end;
var Form1: PForm1;

procedure NewForm1(var Result: PForm1; AParent: PControl);
begin
 New(Result, Create);
 with Result^ do
 begin
   form:=NewForm(AParent, 'TestMHPrinters').SetSize(200,100);
   btn := NewButton(form, 'Print').CenterOnParent;
   osd := NewOpenSaveDialog('Select Picture to Print','',[]);
   form.Add2AutoFree(osd);
   btn.OnClick := DoClick;
 end;
end;
{ TForm1 }

procedure TForm1.DoClick(Sender: PObj);
var bmp: PBitmap; prn: PMHPrinter;
begin
 with osd^ do
 begin
   Filter := 'Bitmaps (*.bmp)|*.bmp';
   if Execute then
   begin
     bmp:=NewBitmap(0,0);
     try
       bmp.LoadFromFile(Filename);
       prn := Printer;
       try
         prn.BeginDoc;
         bmp.StretchDraw(Prn.Canvas.Handle, prn.Canvas.ClipRect);
         prn.EndDoc;
       finally
         prn.Free
       end;
     finally
       bmp.Free;
     end;
   end;
 end;
end;

begin
 NewForm1(Form1,nil);
 Run(Form1.form);
end.


Dy1   (2007-07-22 18:28:00) [6]

Есть ли демка? Программист я никакой. Инглиш знаю плохо и ИМХО в модуле комментарии написаны на не совсем английском :)


Dimaxx   (2007-07-22 16:02:00) [7]

Есть KOLMHPrinters Жарова. Пользовался (правда для простой печати) - работает...


Наверх

Титульная страница Поиск, карта сайта Написать письмо