|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
печать данных из ListView
На форме ListView(vsReport). Там 12 колонок и много строк.
Первый вопрос: как напечать содержимое ListView'a с сохранением всех табуляций, т.е. если есть пустые строки/колонки, то чтобы они и остались пустыми. Второй вопрос: допустим у меня длина строки больше, чем поместится на лист при печати. Возможно ли сделать так, чтобы "не влезшие" буквы переносились на следующую строку? Заранее спасибо. |
#2
|
|||
|
|||
Так и не додумался как напечатать из 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; |