PDA

View Full Version : چاپ stringgrid



f
پنج شنبه 15 مرداد 1388, 14:35 عصر
سلام
من میخوام محتوای یک stringgrid را با استفاده از fastreport به همون صورتی که در stringgrid هست چاپ کنم. ولی نمیتونم محتوای stringgrid را به memo تبدیل کنم و به صورت پارامتر ارسالش کنم. آیا راهی وجود داره که بتونم stringgrid را چاپ کنم؟؟؟
ضمنا از دستور print مربوط به stringgrid هم استفاده کردم ولی خروجی چاپ اعداد را به صورت انگلیسی نمایش داد و stringgrid را هم چپ به راست چاپ کرد(در حالی که در فرم از راست به چپ هست)!

merced
پنج شنبه 15 مرداد 1388, 22:57 عصر
من باشم اطلاعات String Grid‌ رو تو يه جدول موقت مي ريزم و با فست گزارشمو مي گيرم

MOJTABAATEFEH
شنبه 11 مهر 1388, 22:18 عصر
دوست عزيز مي تونيد از كد زير براي چاپ Stringgrid استفاده كنيد :



uses
printers;

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(0, 100, Printer.Title);
For F:=1 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:=1 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:=7;
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;