Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.08.2007, 14:14
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
Вопрос печать данных из ListView

На форме ListView(vsReport). Там 12 колонок и много строк.
Первый вопрос: как напечать содержимое ListView'a с сохранением всех табуляций, т.е. если есть пустые строки/колонки, то чтобы они и остались пустыми.
Второй вопрос: допустим у меня длина строки больше, чем поместится на лист при печати. Возможно ли сделать так, чтобы "не влезшие" буквы переносились на следующую строку?

Заранее спасибо.
Ответить с цитированием
  #2  
Старый 20.08.2007, 13:57
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Так и не додумался как напечатать из ListView...Пришлось вместо ListView'a использовать StringGrid. Ниже процедура.Может кому-нибудь поможет?!


Код:
Procedure PrintGrid(sGrid: TstringGrid; sTitle: string);
var
X1, X2 : Integer;
Y1, Y2 : Integer;
TmpI : Integer;
F : Integer;
TR : TRect;
Begin
Printer.Title:=sTitle;
Printer.BeginDoc;
Printer.Canvas.Pen.Color:=0;
Printer.Canvas.Font.Name:='Times New Roman';
Printer.Canvas.Font.Size:=12;
Printer.Canvas.Font.Style:=[fsBold, fsUnderline];
Printer.Canvas.TextOut(100, 50, Printer.Title);
For F:=0 to sGrid.ColCount-1 do Begin
X1:=0;
For TmpI:=1 to (F-1) do
X1:=X1+5*(sGrid.ColWidths[TmpI]);
Y1:=300;
X2:=0;
For TmpI:=0 to F do
X2:=X2+5*(sGrid.ColWidths[TmpI]);
Y2:=450;
TR:=Rect(X1, Y1, X2-30, Y2);
Printer.Canvas.Font.Style:=[fsBold];
Printer.Canvas.Font.Size:=12;
Printer.Canvas.TextRect(TR, X1+50, 350, sGrid.Cells[F, 0]);
Printer.Canvas.Font.Style:=[];
For TmpI:=1 to sGrid.RowCount-1 do Begin
Y1:=150*TmpI+300;
Y2:=150*(TmpI+1)+300;
TR:=Rect(X1, Y1, X2-30, Y2);
Printer.Canvas.TextRect(TR, X1+50, Y1+50, sGrid.Cells[F, TmpI]);
End;
End;
Printer.EndDoc;
End;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter