Re: Никто еще не смог ответить мне на этот вопрос !!!!
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.03.02 22:35
Оценка:
Здравствуйте 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. Печатается рамочка, и дерево показывается не полностью.
Решение: сделать его невидимым, и поставить размеры достаточными для вывода всех элементов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.