Вот код, который печатает содержимое компонента Memo. Думаю его можно переделать под ваши нужды:
| Код | procedure TForm1.Print(Memo: TMemo); // Печать содержимого редактора c помощью свойства Printer.Canvas var Y,dY,X,k: Integer; S: String; begin if Memo.Lines.Count=0 then Exit; Screen.Cursor := crHourGlass; with Printer do begin BeginDoc; with Canvas do begin Font := Memo.Font; dY := TextHeight('1'); // Определяем высоту строки Y := 3*dY; // Отступ от верхнего края листа X := PageWidth div 15; // Отступ от левого края for k := 0 to Memo.Lines.Count-1 do begin // Выводим очередную строку TextOut(X,Y,Memo.Lines[k]); // Смещаемся на следующую строку листа inc(Y,dY); if PageHeight-Y<2*dY then // Нижний край листа? begin // Да NewPage; // Переход на новый лист // Выводим номер страницы посередине листа: S := '- '+IntToStr(PageNumber)+' -'; TextOut((PageWidth-TextWidth(S)) div 2, dy, S); // и отчеркиваем его от текста: MoveTo(X, 3*dy div 2); LineTo(PageWidth-X, 9*dy div 4); // Ордината первой строки: Y := 3*dY end; // if PageHeight-Y<2*dY end; // for k := 0 to Memo1.Lines.Count-1 do end; // with Canvas do EndDoc; end; // with Printer do Screen.Cursor := crDefault; end;
|
|