Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 17:21   #1
Миледи
 
Регистрация: 18.04.2012
Сообщений: 7
По умолчанию Печать ListBox

Можно ли распечатать то что выводится в listbox? напишите код если это возможно
Миледи вне форума Ответить с цитированием
Старый 12.05.2012, 11:24   #2
vasiliyrob
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 4
По умолчанию

Код:
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;
Потом вызываем нашу функцию
Код:
PrintStrings(ListBox.items,  Font{нужно предварительно создать}, 'титл');
vasiliyrob вне форума Ответить с цитированием
Старый 12.05.2012, 15:31   #3
Миледи
 
Регистрация: 18.04.2012
Сообщений: 7
По умолчанию

У меня много ошибок появилось например тут
Код:
Printer.Canvas.Font.Assign(Font);
может вы исходник скинете
Миледи вне форума Ответить с цитированием
Старый 12.05.2012, 15:37   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Код:
unit XXX;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Printers;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
печать незнайка_на_земле Помощь студентам 0 25.10.2011 19:28
печать listbox Ghennadiy Общие вопросы Delphi 4 11.02.2011 20:40
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
Печать MSD Помощь студентам 3 07.06.2010 12:48