Odpowiedź na twoje pytanie jest bliżej niż myślisz. Zapraszam na FAQ serwisu 4p. Można znaleź wiele ciekawych rzeczy. Mi udało znaleźć ten oto fragment kodu, który drukuje StringGrida. Przeklejam go żywcem z FAQ choć, nie powinienem.
//*******************************************************
// Drukowanie
//*******************************************************
procedure TForm1.Button4Click(Sender: TObject);
var
r: TRect;
i: Integer;
s: string;
pozycja : integer;
begin
Printer.Canvas.Font.Size:=czcionka;
Printer.BeginDoc;
Canvas.Brush.Style := bsClear;
kolumna:= (Printer.Pagewidth - 340)div 6; // obliczam szerokość kolumny
// tu wpisuje pr\ykładowy nagłówek
Printer.Canvas.TextOut(200,500,' '+ DateToStr(Date)+' ' +TimeToStr(GetTime)+
' Razem worków = '+ edit2.text +' Razem sztuk = '+ edit3.text );
//Tutaj rysuję kratki
with Printer do
begin
pozycja:=890 ;
for i := 0 to dl_tabeli do
begin //wiersze
Canvas.MoveTo(200, pozycja); // ustaw kursor we wlasciwym miejscu
Canvas.LineTo(Printer.Pagewidth - 200,pozycja ); // rysuj linie
pozycja:= 1220 + (i * (czcionka + wiersz)) ;
end;
for i := 0 to 7 do
begin //kolumny
Canvas.MoveTo(i*kolumna+180,890); // ustaw kursor we wlasciwym miejscu
Canvas.LineTo(i*kolumna+180,Printer.PageHeight - 200); // rysuj linie
end;
end;
// dla większego komfortu utworzyłem dodatkowe zmienne do pozycjonowania wydruku , oraz liter
for i := 0 to dl_tabeli do // pierwsza kolumna
begin
s := StringGrid5.cells[0,i] ;
Printer.Canvas.TextOut(p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
end;
for i := 0 to dl_tabeli do // druga kolumna
begin
s := StringGrid5.cells[1,i] ;
Printer.Canvas.TextOut(kolumna + p_kolumny,1000 +(i * (czcionka + wiersz)+ p_wiersza),s );
end;
for i := 0 to dl_tabeli do
begin
s := StringGrid5.cells[2,i] ;
Printer.Canvas.TextOut(2*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
end;
for i := 0 to dl_tabeli do
begin
s := StringGrid5.cells[3,i] ;
Printer.Canvas.TextOut(3*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
end;
for i := 0 to dl_tabeli do
begin
s := StringGrid5.cells[4,i] ;
Printer.Canvas.TextOut(4*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
end;
for i := 0 to dl_tabeli do
begin
s := StringGrid5.cells[6,i] ;
Printer.Canvas.TextOut(5*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
end;
Printer.enddoc;
end;