27. februar 2002 - 18:53
Der er
7 kommentarer og
1 løsning
Udskriv data fra lister så det står fint på siden.
Jeg har oprettet en liste med 13 forskellige attributter og ønsker at kunne udskrive nogle listen som den står på skærmen, men der skal også være mulighed for at kun vælge at printe nogle af oplysningerne. Skal se sådan ud:
Nr Fornavn Efternavn Tlf
1 Lars Møller 111111111
2 Bent Hansen 222222222
Jeg er stort set på bar bund.
27. februar 2002 - 21:14
#7
Har nu fundet ud af at få printet hele mit StringGrid ud ved hjælp af Canvas. Men hvordan vælger jeg enkelte data ud med hjælp af mine checkboxes? Min kode ser nu sådan ud:
procedure TFormUdskriv.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);
if checkbox1.Checked then
for F := 0 to sGrid.ColCount - 1 do
begin
X1 := 0;
for TmpI := 0 to (F - 1) do
X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
Y1 := 300;
X2 := 0;
for TmpI := 0 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 := 0 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;
27. februar 2002 - 22:36
#8
hmm det er lidt svært for mig at se hvad du egentlig vil, men jeg tror du ikke bare lave 0 højde for de rækker/kolonder du ikke vil have vist. ellers send lige dit program til mig på jakob_Lundqvist@mail.tele.dk