Недавно добавленные исходники

•  Animation Loaders  965

•  DeLiKaTeS Tetris (Тетрис)  5 899

•  TDictionary Custom Sort  7 850

•  Fast Watermark Sources  7 520

•  3D Designer  10 750

•  Sik Screen Capture  8 078

•  Patch Maker  8 279

•  Айболит (remote control)  8 327

•  ListBox Drag & Drop  7 165

•  Доска для игры Реверси  101 117

•  Графические эффекты  8 393

•  Рисование по маске  7 770

•  Перетаскивание изображений  6 363

•  Canvas Drawing  6 739

•  Рисование Луны  6 669

•  Поворот изображения  5 799

•  Рисование стержней  4 744

•  Paint on Shape  3 445

•  Генератор кроссвордов  4 435

•  Головоломка Paletto  3 579

•  Теорема Монжа об окружностях  4 376

•  Пазл Numbrix  2 834

•  Заборы и коммивояжеры  3 788

•  Игра HIP  2 553

•  Игра Go (Го)  2 559

•  Симулятор лифта  2 950

•  Программа укладки плитки  2 377

•  Генератор лабиринта  3 127

•  Проверка числового ввода  2 610

•  HEX View  3 014

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Распечатать TStrings на принтере по умолчанию




procedure PrintStrings(S: TStrings; Font: TFont; Title: string);
var
 LeftMargin, TopMargin, LineCoord, LineOnPage, LinesOnDoc,
 CurrentLine, TextHeight, LinesPerPage, LineInterval: integer;

 procedure StartDoc;
 begin
   LinesOnDoc := S.Count;
   Printer.Canvas.Font.Assign(Font);
   Printer.Canvas.TextOut(0, 0, ' ');
   LeftMargin := (Printer.Canvas.Font.PixelsPerInch) div 2;
   TopMargin  := (Printer.Canvas.Font.PixelsPerInch) div 2;
   TextHeight := Abs(Printer.Canvas.Font.Height);
   LineInterval := TextHeight + (TextHeight div 2);
   LinesPerPage := (Printer.PageHeight - TopMargin) div LineInterval;
   CurrentLine := 0;
 end;

 function MorePages:boolean;
 begin
   Result := (CurrentLine <  LinesOnDoc) and
             not Printer.Aborted;
 end;

 procedure StartPage;
 begin
   LineOnPage := 0;
   LineCoord := TopMargin;
 end;

 procedure NextPage;
 begin
   if MorePages then Printer.NewPage;
 end;

 function MoreLines:boolean;
 begin
   Result := (LineOnPage <  LinesPerPage) and
             (LineOnPage <  LinesOnDoc) and
             not Printer.Aborted;
 end;

 procedure NextLine;
 begin
   Inc(LineOnPage);
   Inc(LineCoord, LineInterval);
   Inc(CurrentLine);
 end;

 procedure PrintLine;
 begin
   Printer.Canvas.TextOut(LeftMargin, LineCoord, S.Strings[CurrentLine]);
 end;

begin
 Printer.Title := Title;
 Printer.BeginDoc;
 StartDoc;
 while MorePages do
 begin
   StartPage;
   while MoreLines do
   begin
     PrintLine;
     NextLine;
     Application.ProcessMessages;
   end;
   NextPage;
 end;
 Printer.EndDoc;
end;








Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте