有哪位知道,怎样将stringgrid上的数据打印出来啊!期待中...
解决方案 »
- 如何将DXDraw控件绘的图显示到Image倥件上?(结贴率100%)
- 求达人帮忙解决delphi怎样安装在win7上
- 有关TDBGridEh的一个单元格内容复制的问题?还有TDBGridEh的内容过滤问题?
- 我是delphi的初学者,还请大家多多指点
- 兄弟们帮个忙------急
- fastreport(字段值相同的合并成一个单元格)
- StringGrid行颜色问题
- 如何显示属性窗体
- 如何创建一个无焦点的Form?类似模拟键盘。另外,谁知道WebBrowser控件如何把显示的网页另存为本地文件,类似IE里面的文件另存为功能。
- 调用SQL SERVER7.0中的存储过程sp_who?
- 在Delphi中如何判断当前系统时间(不包括日期),在二个时间(不包括日期)之间?
- 如何使listview排序呀
printers; 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
HeaderSize := 100;
FooterSize := 200;
ZeilenSize := 36;
FontHeight := 36; Printer.Orientation := Orientation;
Printer.Title := Title;
Printer.BeginDoc;
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); Zeilen := (VertSize - HeaderSize - FooterSize) div ZeilenSize;
if Grid.RowCount mod Zeilen <> 0 then
AnzSeiten := Grid.RowCount div Zeilen + 1
else
AnzSeiten := Grid.RowCount div Zeilen; Seite := 1;
for P := 1 to AnzSeiten do
begin
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);
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);
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;
Inc(Seite);
if Seite <= AnzSeiten then Printer.NewPage;
end;
Printer.EndDoc;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
PrintStringGrid(Grid, 'StringGrid Print Landscape', poLandscape);
PrintStringGrid(Grid, 'StringGrid Print Portrait', poPortrait);
end; (注:別人作的、提供参考)