Zusammengefasst ist die einfachste Lösung, die Reihenfolge des Codes umzustellen.
Damit wird die durch "MoveTo" gesetzte Cursorposition nicht durch das folgende "TextOut" verändert.
Delphi-Quellcode:
Printer.Canvas.TextOut(XPos, -YPos, Grid.Cells[j, i + (Seite - 1) * Zeilen - 1]);
if EigeneDruckerEinstellungen.rgLinien.ItemIndex = 0 then
begin
Printer.Canvas.MoveTo(XPos, -YPos);
end;
XPos := XPos + Grid.ColWidths[j] * 3;
if EigeneDruckerEinstellungen.rgLinien.ItemIndex = 0 then
begin
Printer.Canvas.LineTo(XPos, -YPos);
end;