|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2011, 06:15 | #1 |
Пользователь
Регистрация: 03.05.2011
Сообщений: 29
|
Вывод на печать.
procedure TForm6.Button4Click(Sender: TObject);
begin PrinterSetupDialog1.Execute; end; procedure TForm6.Button5Click(Sender: TObject); var i, start, stop: integer; begin PrintDialog1.Options:=[poPageNums,poSelection]; PrintDialog1.FromPage:=1; PrintDialog1.ToPage:=PageControl1.P ageCount; PrintDialog1.MinPage:=1; PrintDialog1.MaxPage:=PageControl1. PageCount; if not PrintDialog1.Execute then Exit; if PrintDialog1.PrintRange=prAllPages then begin Start:=PrintDialog1.MinPage-1; Stop:=PrintDialog1.MaxPage-1; end else // если выбрано отличное от 'Print All' if PrintDialog1.PrintRange=prSelection then begin Start:=PageControl1.ActivePageIndex ; Stop:=Start; end else // если выбрано отличное от 'Выделенный фрагмент' begin Start:=PrintDialog1.FromPage-1; Stop:=PrintDialog1.ToPage-1; end; // начало печати Printer.BeginDoc; for i:=start to stop do begin PageControl1.Pages[i].PaintTo(Printer.Handle,10,10); if i<>stop then Printer.NewPage; end; Printer.EndDoc; end; procedure TForm6.Button3Click(Sender: TObject); begin close; end; procedure TForm6.Button1Click(Sender: TObject); // Печать содержимого редактора c помощью свойства Printer.Canvas var Y,dY,X,k: Integer; S: String; begin if Memo1.lines.count=0 then Exit; Screen.Cursor := crHourGlass; with Printer do begin BeginDoc; with Canvas do begin Font := Memo1.Font; dY := TextHeight('1'); // Определяем высоту строки Y := 3*dY; // Отступ от верхнего края листа X := PageWidth div 15; // Отступ от левого края for k := 0 to Memo1.Lines.Count-1 do begin // Выводим очередную строку TextOut(X,Y,Memo1.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; В двух словах. Мне вместо мемо1 нужно вывести на печать таблицу с другой формы. Таблица отображается в dbgrid. c помощью Adoquery. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод на печать | ferrum88 | Помощь студентам | 2 | 12.11.2010 08:25 |
Вывод данных на печать | Дикий ангел | Помощь студентам | 4 | 14.04.2010 14:13 |
Вывод на печать((( | oD1k | Помощь студентам | 3 | 02.12.2009 20:28 |
Вывод на печать | sali_s | Microsoft Office Excel | 2 | 04.06.2008 12:05 |
Вывод на печать | -=<[Evklidd]>=- | Общие вопросы Delphi | 6 | 22.02.2008 19:56 |