Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать Sgrida, Помогите подправить код  
:(
    Опции темы
YAESUMAN
Дата 7.12.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.6.2008

Репутация: нет
Всего: нет



Доброго времени суток.
Была необходимость из проги произвести печать Грида. Вроде разобрался все устраивало, 
но возникла надобность печатать не все содержание грида а выборочно интервала с (5 по 25 строку) ну и там т.д.
Прошу помочь модифицировать (если это возможно конечно) приведенный код которым пользовался. 
Понимаю, что нужно задать 2 переменные и присвоить им значения номеров строк но на практике не силен.
Буду весьма признателен за помощь.
Большое спасибо.
Код

procedure PrintGrid1(sGrid: TStringGrid; sTitle:string; Col:Integer);
 var
  X1, X2: Integer;
  Y1, Y2: Integer;
  TmpI: Integer;
  f: Integer;
  TR: TRect;
  coll:integer;
  ff:boolean;
 begin
  coll:=0;
  f:=0;
  ff:=false;
  Printer.Title := sTitle;
    if Printer.PageNumber=0 then
     begin
     Printer.Orientation:=poLandscape;
     Printer.BeginDoc;
     ff:=true;
     end;
  Printer.Canvas.Pen.Color  := 0;
  Printer.Canvas.Font.Name  := 'Times New Roman';
  Printer.Canvas.Font.Size  := 7;
  Printer.Canvas.Font.Style := [fsBold, fsUnderline];
  Printer.Canvas.TextOut(0,70,Printer.Title);

  while col<=sGrid.RowCount do
      begin
      x1:=0;
      x2:=0;
      Y1 := 110 * coll + 300;
      Y2 := 110 * (coll + 1) + 300;
      TR := Rect(X1, Y1, X2 - 10, Y2);
      Printer.Canvas.Font.Style := [fsBold];
      Printer.Canvas.Font.Size := 7;
       if Printer.PageHeight>Y2 then
         Printer.Canvas.TextRect(TR, X1 + 10, Y1 + 10, sGrid.Cells[0, col])
         else
         begin
          Printer.NewPage;
          PrintGrid(sGrid, sTitle, col);
          break;
         end;
      while f<sGrid.ColCount do
         begin
         X1 := 0;
         for TmpI := 0 to (f - 1) do
             X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
         X2 := 0;
         for TmpI := 0 to F do
            X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
         TR := Rect(X1, Y1, X2 - 10, Y2);
         Printer.Canvas.TextRect(TR, X1 + 10, Y1 + 10, sGrid.Cells[f,col]);
         inc(f);
         end;
      f:=0;
      inc(coll);
      inc(col);
      end;

  if ff then
     Printer.EndDoc;
 end;

procedure TForm5.Button10Click(Sender: TObject);
begin
  PrintGrid1(StringGrid1,Form1.Caption,0);
end;

 
  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.