Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизКак скопировать х.Canvas в Printer.Canvas? Найти похожие ветки
← →
Геннадий (2003-07-22 18:42) [0]Приветствую!
Необходимо распечатать содержимое окна броузера. Как это выполнить? В нижеприведённом коде принтер печатает ПУСТУЮ страницу...
var
H : THandle;
DC : HDC;
Can : TCanvas;
begin
If not PrintDialog.Execute then Exit;
H:= WebBrowser.Handle;
DC:= GetDC(H);
Can:= TCanvas.Create;
Can.Handle:= DC;
Printer.BeginDoc;
Printer.Canvas.Handle:= Can.Handle;
Printer.EndDoc;
Can.Free;
end;
Подскажите, кто сталкивался.
← →
Sandman25 (2003-07-22 18:45) [1]WebBrowser.PaintTo(Printer.Canvas.Handle, ...)
← →
Sandman25 (2003-07-22 18:47) [2]Или что-то типа того. Только что в help нашел, никогда не использовал :)
← →
Marser (2003-07-22 21:10) [3]printer.canvas.assign(x.canvas)
← →
Геннадий (2003-07-23 13:31) [4]Sandman25 © (22.07.03 18:45)
WebBrowser.PaintTo(Printer.Canvas.Handle, ...)
Нет - чистый лист выходит...
procedure TPrintForm.PrintBitBtnClick(Sender: TObject);
var
H : THandle;
DC : HDC;
Can : TCanvas;
begin
If not PrintDialog.Execute then Exit;
H:= WebBrowser.Handle;
DC:= GetDC(H);
Can:= TCanvas.Create;
Can.Handle:= DC;
Printer.BeginDoc;
//Printer.Canvas.Handle:= Can.Handle;
WebBrowser.PaintTo(Printer.Canvas.Handle, 0, 0);
Printer.EndDoc;
Can.Free;
end;
← →
BOA_KAA (2003-07-23 14:09) [5]> Marser © (22.07.03 21:10)
> printer.canvas.assign(x.canvas)
Вы бы сначала попробовали...
> PaintTo
F1: Call PaintTo to draw the control on a device context.
Как вы собираетесь нарисовать контрол на принтере?
Поробуйте использовать StretchBlt
← →
REA (2003-07-23 14:12) [6]А у самого браузера нет печати? Имхо лучше будет.
← →
Переяслов Григорий (2003-07-23 14:17) [7]А если Printer.Canvas := Can; ?
← →
Геннадий (2003-07-23 16:49) [8]REA © (23.07.03 14:12)
А у самого браузера нет печати? Имхо лучше будет.
К сожалению, нет. Я не нашёл такого метода.
Переяслов Григорий © (23.07.03 14:17)
А если Printer.Canvas := Can; ?
Read only property, что б его! :))
← →
Переяслов Григорий (2003-07-23 17:56) [9]Как так, я спокойно рисую на Printer.Canvas?
А если использовать его метод CopyRect?
← →
Геннадий (2003-07-24 14:54) [10]Переяслов Григорий © (23.07.03 17:56)
Как так, я спокойно рисую на Printer.Canvas?
А если использовать его метод CopyRect?
Рисовать - можно. Но в данном случае необходимо отрисовать другой, уже подготовленный Canvas.
← →
Переяслов Григорий (2003-07-24 15:27) [11]Так вот. Напиши процедуру рисования и передавай ей как параметр канву. И передавай ей потом через этот параметр канву компонента или канву принтера. Так у меня реализована возможность предварительного просмотра перед печатью. (пример содрал, кстати, из книжицы Тома Свана "Delphi 4. Библия разработчика").
К примеру.
procedure DrawPage (C : Canvas);
begin
. . .
C.Rectangle(...
. . .
end;
begin
DrawPage(Panel1.Canvas);
. . .
DrawPage(Printer.Canvas);
end.
Примерно вот так
← →
BOA_KAA (2003-07-24 15:59) [12]> Геннадий © (23.07.03 16:49)
Да сделайте через StretchBlt
← →
Геннадий (2003-07-24 16:45) [13]:)) Так не я рисую!
Я загружаю в компонент WebBrouser сохранённый HTML-файл. Он его отображает. Вот это отображение мне и надо распечатать.
BOA_KAA © (24.07.03 15:59)
> Геннадий © (23.07.03 16:49)
Да сделайте через StretchBlt
Сейчас посмотрю что за метод.
← →
BOA_KAA (2003-07-24 16:48) [14]> Сейчас посмотрю что за метод.
Это API :-)
← →
Геннадий (2003-07-26 16:50) [15]Не в ту степь я копаю... Canvas WebBrouser"а не содержит всей страницы - только выделенная часть (экономный, блин:) ).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c