Здравствуйте Irina_D6, Вы писали:
ID>Не удается распечатать все дерево TreeView или
ID>печатается да не так.
ID>Данная штука не так работает :
ID>Printer.BeginDoc;
ID>TreeView1.PainTo(Printer.Canvas.Habdle,10,10);
ID>Printer.EndDoc;
ID>Задавал этот вопрос во всех возможных форумах и дискусиях умных программеров ,
ID>И НИКТО НЕ СМОГ МНЕ НА ЭТО ОТВЕТИТЬ !!!!!!!
ID>Неужели никто не знает !!!!!!!!!!
А что именно "не так"?
Я вижу две возможных проблемы:
1. Размер при печати на лазерном принтере весьма миниатюрен.
Решение: задать масштабирование перед выводом на принтер:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
xform: TXForm;
Ratio: Extended;
begin
xform.eM12:=0;
xform.eM21:=0;
xform.eDx:=0;
xform.eDy:=0;
Printer.BeginDoc; // This ensures that device capabilities are known
Ratio:= GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY)/Screen.PixelsPerInch;
xform.eM11:=Ratio;
xform.eM22:=Ratio;
if (SetGraphicsMode(Printer.Canvas.Handle, GM_ADVANCED)<>0)
then SpeedButton1.Caption:=SpeedButton1.Caption+'SGM :) ';
if SetWorldTransform(Printer.Canvas.Handle, xform)
then SpeedButton1.Caption:=SpeedButton1.Caption+'SWT :)';
TreeView1.PaintTo(Printer.Canvas.Handle,10,10);
Printer.EndDoc;
end;
В данном примере все работает только на WinNT и Win2k. Для Win95/98 надо пользоваться ScaleViewportExtEx, щас нет времени сделать пример.
2. Печатается рамочка, и дерево показывается не полностью.
Решение: сделать его невидимым, и поставить размеры достаточными для вывода всех элементов.