Autor Beitrag
marki
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 19.10.02 12:56 
Hi Leute,

habe ein kleines Problem mit dem Ausdruck per Canvas. Der Ausdruck funktioniert schon, nur ist irgenwo ein kleiner Schönheitsfehler. Zwischen den einzelnen werten ist ein Leerblock. Der Ausdruck sieht ungefähr so aus.


29.08.2002
18.09.2002
18.10.2002




07.09.2002
27.09.2002
27.10.2002

Was muß im Code geändert werden?
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
procedure TForm1.bnDruckClick(Sender: TObject);
var datum, text, aus_datum1, aus_datum2, aus_datum3: string;
var zAlt1, zAlt2, zAlt3, lAlt: Integer;
begin
  //Text drucken
  //Tabellenkopf
  datum := DateToStr(Date);  //aktuelles Datum
  zAlt1 := 1;                //alte Position des Textes
  zAlt2 := 1;
  zAlt3 := 1;
  Printer.BeginDoc;
  Printer.Canvas.Font.Size := 18;
  Printer.Canvas.TextOut(liAnfang, 10, 'Überweisungsliste');
  Printer.Canvas.Font.Size := 8;
  Printer.Canvas.TextOut(liAnfang, 38, 'Druckdatum: ' + datum);
  Printer.Canvas.Font.Size := 10;
  text :=  'Datum        Betrag          Empfängerdaten                              Einzahler                    überwiesen am';
  Printer.Canvas.TextOut(liAnfang, 52, text);
  Printer.Canvas.Pen.Width := 2;
  Printer.Canvas.MoveTo(liRand, 65);
  Printer.Canvas.LineTo(lLaenge, 65);
  //Druck der Abfrage
  Printer.Canvas.Pen.Width := 1;
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    Printer.Canvas.Font.Size := 8;
    aus_datum1 := DBGrid1.Fields[21].AsString;
    aus_datum2 := DBGrid1.Fields[20].AsString;
    aus_datum3 := DBGrid1.Fields[19].AsString;
    Printer.Canvas.TextOut(liAnfang, zAlt1*70, aus_datum1);
    Printer.Canvas.TextOut(liAnfang, (zAlt2*70)+10, aus_datum2);
    Printer.Canvas.TextOut(liAnfang, (zAlt3*70)+20, aus_datum3);
    Inc(zAlt1);
    Inc(zAlt2);
    Inc(zAlt3);
    DBGrid1.DataSource.DataSet.Next;
    //Printer.Canvas.Font.Size := 10;
    //Printer.Canvas.MoveTo(liRand, lAlt*120);
    //Printer.Canvas.LineTo(lLaenge, lAlt*120);
  end;
  //Tabellenfuß
  Printer.Canvas.Font.Size := 10;
  Printer.Canvas.MoveTo(liRand, 755);
  Printer.Canvas.LineTo(lLaenge, 755);
  Printer.Canvas.Font.Size := 6;
  Printer.Canvas.TextOut(liAnfang, 755, 'MK - Überweisung für Linux 1.0');
  Printer.Canvas.TextOut(500, 755, 'Seite ' + IntToStr(Printer.PageNumber+1));
  Printer.EndDoc;
  txtVon.SelStart := 0;
  txtVon.SelLength := 1;
  txtVon.SetFocus;
end;

Ach ja, und wie kann man feststellen, ob eine Seite voll ist?

Mario

P.S. bitte kein Hinweis auf QReport, da das ganze unter Kylix3 läuft

(20.10.02 14:35 Tino) Code-Tags hinzugefügt.