Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Распечатать TStringGrid 2

Delphi , ОС и Железо , Принтеры и Печать

Распечатать TStringGrid 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   printers;

 //StringGrid Inhalt ausdrucken 
procedure PrintStringGrid(Grid: TStringGrid; Title: string;
   Orientation: TPrinterOrientation);
 var
   P, I, J, YPos, XPos, HorzSize, VertSize: Integer;
   AnzSeiten, Seite, Zeilen, HeaderSize, FooterSize, ZeilenSize, FontHeight: Integer;
   mmx, mmy: Extended;
   Footer: string;
 begin
   //Kopfzeile, Fu?zeile, Zeilenabstand, Schriftgro?e festlegen 
  HeaderSize := 100;
   FooterSize := 200;
   ZeilenSize := 36;
   FontHeight := 36;
   //Printer initializieren 
  Printer.Orientation := Orientation;
   Printer.Title  := Title;
   Printer.BeginDoc;
   //Druck auf mm einstellen 
  mmx := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH) /
     GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4;
   mmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) /
     GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4;

   VertSize := Trunc(mmy) * 10;
   HorzSize := Trunc(mmx) * 10;
   SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);

   //Zeilenanzahl festlegen 
  Zeilen := (VertSize - HeaderSize - FooterSize) div ZeilenSize;
   //Seitenanzahl ermitteln 
  if Grid.RowCount mod Zeilen <> 0 then
     AnzSeiten := Grid.RowCount div Zeilen + 1
   else
     AnzSeiten := Grid.RowCount div Zeilen;

   Seite := 1;
   //Grid Drucken 
  for P := 1 to AnzSeiten do
   begin
     //Kopfzeile 
    Printer.Canvas.Font.Height := 48;
     Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Title) div 2)),
       - 20,Title);
     Printer.Canvas.Pen.Width := 5;
     Printer.Canvas.MoveTo(0, - HeaderSize);
     Printer.Canvas.LineTo(HorzSize, - HeaderSize);
     //Fu?zeile 
    Printer.Canvas.MoveTo(0, - VertSize + FooterSize);
     Printer.Canvas.LineTo(HorzSize, - VertSize + FooterSize);
     Printer.Canvas.Font.Height := 36;
     Footer := 'Seite: ' + IntToStr(Seite) + ' von ' + IntToStr(AnzSeiten);
     Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Footer) div 2)),
       - VertSize + 150,Footer);
     //Zeilen drucken 
    Printer.Canvas.Font.Height := FontHeight;
     YPos := HeaderSize + 10;
     for I := 1 to Zeilen do
     begin
       if Grid.RowCount >= I + (Seite - 1) * Zeilen then
       begin
         XPos := 0;
         for J := 0 to Grid.ColCount - 1 do
         begin
           Printer.Canvas.TextOut(XPos, - YPos,
             Grid.Cells[J, I + (Seite - 1) * Zeilen - 1]);
           XPos := XPos + Grid.ColWidths[J] * 3;
         end;
         YPos := YPos + ZeilenSize;
       end;
     end;
     //Seite hinzufugen 
    Inc(Seite);
     if Seite <= AnzSeiten then Printer.NewPage;
   end;
   Printer.EndDoc;
 end;

 //Example 
procedure TForm1.Button1Click(Sender: TObject);
 begin
   //Drucken im Querformat 
  PrintStringGrid(Grid, 'StringGrid Print Landscape', poLandscape);
   //Drucken im Hochformat 
  PrintStringGrid(Grid, 'StringGrid Print Portrait', poPortrait);
 end;

Статья Распечатать TStringGrid 2 раздела ОС и Железо Принтеры и Печать может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Принтеры и Печать ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
20.04.2024 13:35:05/0.0046379566192627/2