unit loteunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, printers,
DB, dbisamtb, StdCtrls, shellapi,Mask, strutils,DBCtrls, Grids, DBGrids, dbisamct,suchunit,tnpdf;
type
Tlote =
class(TForm)
Label1: TLabel;
Label10: TLabel;
DBISAMDBGrid1: TDBISAMDBGrid;
DBISAMQuery1: TDBISAMQuery;
DataSource1: TDataSource;
order: TDBEdit;
Artikel: TDBEdit;
Button1: TButton;
StringGrid1: TStringGrid;
procedure deletetmppdf();
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure PrintGrid(sGrid: TStringGrid; sTitle:
string);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
lote: Tlote;
implementation
{$R *.dfm}
function GetTempPathD:
string;
var
TmpDir: PChar;
begin
TmpDir := StrAlloc(255);
GetTempPath( 255,TmpDir);
Result :=
string(TmpDir);
if Result[Length(Result)] <> '
\'
then
Result := Result + '
\';
StrDispose(TmpDir);
end;
procedure Tlote.deletetmppdf();
var
SR: TSearchRec;
begin
if FindFirst(gettemppathd+'
tmp*.pdf', faAnyFile - faDirectory, SR) = 0
then
repeat
deletefile(gettemppathd+sr.
name);
until FindNext(SR) <> 0;
end;
procedure Tlote.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
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;
procedure Tlote.Button1Click(Sender: TObject);
begin
PrintGrid(StringGrid1, '
Print Stringgrid');
end;
end.