![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посоветуйте плз компонент для печати [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 Жарова. Пользовался (правда для простой печати) - работает...