Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - DBGrid und Drucken ---> Probleme
elduchte - Fr 20.06.03 14:32
Titel: DBGrid und Drucken ---> Probleme
Hallo,
ich habe es endlich geschafft, eine bestehende Datenbank (unter ACCESS) in mein Delphi-Programm einzubinden. Ist ja auch ganz einfach, wenn ich mal drüber nachdenke....
Allerdings habe ich jetzt noch einen Wunsch: Ich möchte den Inhalt, der in DBGrid dargestellt wird auch ausdrucken können und zwar mit dem Gitternetz. Habe schon einige Versuche hinter mir, bekomme aber immer nur ein leeres Blatt...... Gibt es auch die Möglichkeit, eine Druckansicht zu erstellen?
Gibt es für mein Problem irgendwo ein Tutorial ?
Vielen Dank für Eure Hilfe
Andreas
elduchte - Fr 20.06.03 15:48
Ein Report???
Kenne ich gar nicht, bin aber auch neu was Delphi-Proggen angeht ... Gibt es den auch unter D5?
Gibt es dort ein gutes Tutorial für? Was ist das genau?
Mein Druckvorhaben ist nämlich ein etwas größeres Problem, zieht sich über mehrere Seiten (viele Spalten)
Über eine Hilfe würde ich mich sehr freuen....
Danke
Andreas
elduchte - Fr 20.06.03 16:27
hallo stefan,
vielen dank für deine hilfe.
habe die komponenten gefunden. allerdings weiß ich nicht, ob das alles so richtig ist.
habe ja bereits ein formular, auf dem ich ddas dbgrid plaziert und mit daten über ado, query und datasource gefüllt habe.
wo soll ich denn jetzt den report plazieren? auf ein neues formular? wie verknüpfe ich denn den report mit meiner datenbank? und was ist mit meinen nach bestimmten kriterien sortierten daten? oder fällt das grid dann weg? fragen über fragen......
danke
andreas
grayfox - Fr 20.06.03 17:33
hallo andi
so [
http://www.tutorials.delphi-source.de/quickreports/file004.shtml] erstellst du ein neues form, welches du zu deiner unses-klausel dazuschreibst.
in dem tutorial findest auch beschrieben, welche bands du verwenden kannst und wie du die felder auf dem report plazierst
auch hier im forum gibt es schon einige beiträge über QuickReport. benutz einfach die suchfunktion ;)
mfg, stefan
Böser Borstel - Di 31.08.04 10:50
Delphi-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:
| procedure PrintGrid(sGrid: TDBGrid; sTitle: WideString); var X, Y, i, F: Integer; Text: WideString; begin Printer.Title := sTitle; Printer.BeginDoc; Printer.Canvas.Pen.Color := 0; Printer.Canvas.Font.Name := sGrid.Font.Name; Printer.Canvas.Font.Size := sGrid.Font.Size; Printer.Canvas.Font.Style := [fsBold, fsUnderline]; Printer.Canvas.TextOut(0, 100, Printer.Title); for F := 0 to sGrid.Columns.Count - 1 do begin X := 0; for i := 0 to (F - 1) do X := X + 5 * (sGrid.Columns.Items[i].Width); Y := 300; Printer.Canvas.Font.Style := [fsBold]; Printer.Canvas.Font.Size := sGrid.Font.Size; TextOutW(Printer.Canvas.Handle, x + 50, y, PWideChar(sGrid.Columns.Items[F].Title.Caption), Length(sGrid.Columns.Items[F].Title.Caption)); Printer.Canvas.Font.Style := []; sGrid.DataSource.DataSet.First; for i := 1 to sGrid.DataSource.DataSet.RecordCount do begin y := 150 * i + 300; Text := sGrid.DataSource.DataSet.FieldByName(sGrid.Columns.Items[F].FieldName).Value; TextOutW(Printer.Canvas.Handle, x + 50, y + 50, PWideChar(Text), Length(Text)); sGrid.DataSource.DataSet.Next; end; end; Printer.EndDoc; end; |
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
Böser Borstel - Di 31.08.04 14:18
habe code verbessert, abgeleitetes objekt von tdbgrid hat die methode print
Delphi-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: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| procedure TTboTntDBGrid.Print(const ATitle: WideString); var Height: Integer;
function Head: Integer; var i, Col, X, Y: Integer; begin Y := 100; for Col := 0 to Columns.Count - 1 do begin X := 0; for i := 0 to (Col - 1) do X := X + 5 * (Columns.Items[i].Width); with Printer.Canvas do begin Font.Style := [fsBold]; TextOutW(Handle, x + 50, y, PWideChar(Columns.Items[Col].Title.Caption), Length(Columns.Items[Col].Title.Caption)); Font.Style := []; end; end; Result := Y + Height; end; var i, j, k, X, Y, Start, Col: Integer; Text: WideString; begin if (DataSource <> nil) and (DataSource.DataSet <> nil) then begin with Printer do begin Title := ATitle; BeginDoc; Canvas.Pen.Color := 0; Canvas.Font.Name := Font.Name; Canvas.Font.Size := Font.Size; Height := Canvas.TextHeight('MqISenbÖ53rBorST3LBoeHNigen'); end; Start := Head; k := 0; DataSource.DataSet.First; for i := 0 to DataSource.DataSet.RecordCount do begin y := Height * k + Start; if Printer.PageHeight < Y + Height then begin k := 0; y := Height * k + Start; Printer.NewPage; Head; end; inc(k); for Col := 0 to Columns.Count - 1 do begin X := 0; for j := 0 to (Col - 1) do X := X + 5 * (Columns.Items[j].Width); Text := DataSource.DataSet.FieldByName(Columns.Items[Col].FieldName).Value; TextOutW(Printer.Canvas.Handle, x + 50, y, PWideChar(Text), Length(Text)); end; Printer.Canvas.Rectangle(0, Y, Printer.PageWidth, Y + 1); DataSource.DataSet.Next; end; Printer.EndDoc; end; end; |
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!