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

•  DeLiKaTeS Tetris (Тетрис)  3 709

•  TDictionary Custom Sort  5 837

•  Fast Watermark Sources  5 641

•  3D Designer  8 293

•  Sik Screen Capture  5 961

•  Patch Maker  6 422

•  Айболит (remote control)  6 415

•  ListBox Drag & Drop  5 272

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

•  Графические эффекты  6 608

•  Рисование по маске  5 688

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

•  Canvas Drawing  5 167

•  Рисование Луны  4 898

•  Поворот изображения  4 442

•  Рисование стержней  3 147

•  Paint on Shape  2 391

•  Генератор кроссвордов  3 259

•  Головоломка Paletto  2 581

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

•  Пазл Numbrix  2 228

•  Заборы и коммивояжеры  2 876

•  Игра HIP  1 854

•  Игра Go (Го)  1 766

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

•  Программа укладки плитки  1 832

•  Генератор лабиринта  2 267

•  Проверка числового ввода  1 957

•  HEX View  2 257

•  Физический маятник  1 936

 
скрыть

  Форум  

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

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



Delphi Sources

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



Оформил: DeeCo

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;




Похожие по теме исходники

TStringGridCheker




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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