Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 13:48:03
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  DBGrid drucken ohne QReport
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: DBGrid drucken ohne QReport  (Gelesen 928 mal)
Mdkmurdoc
Jr. Member
**
Offline Offline

Beiträge: 77


336309822
« am: 11.10.2003, 21:46:54 »

Hallo.

Ich suche eine Möglichkeit, wie ich den Inhalat eines DBGrids ausdrucken kann, ohne ein WReport zu nutzen. Ich hab zwar was gefunden, womit ich dies machen kann, aber der Ausdruck sieht sowas von blöd aus. Man kann keine vernünpftigen Einstellungen machen, wie rechtsbündig und so weiter. wie Kann ich jede Zeile auslesen und an ein Richedit übergeben, von wo ich dies dann ausdrucken kann.

MFG MDKMurdoc
Gespeichert

Es braucht die Rechenpower eines Pentium 4, 256 MB RAM und 20 GB Festplattenspeicher, um Win XP laufen zu lassen. Es brauchte die Rechenpower von drei C64, um zum Mond zu fliegen
Mackhack
Gast
« Antworten #1 am: 25.10.2003, 16:50:39 »

Hi,

das habe ich mal im Netz gefunden. Vielleicht hilf es dir weiter:

Code:

Stringgrid drucken

// Es wird ein Stringgrid an den Drucker geschickt. Der Einfachheit halber

// sowie aus Platzgründen werden die Trennstriche zwischen den einzelnen Zellen

// stets nur 1 Pixel breit gezeichnet. Es kann ein Offset von der linken

// und/oder der oberen Druckkante angegeben werden. Diese Werte entsprechen der

// Pixelzahl auf dem Bildschirm, d.h. wenn z.B. das Grid 10 Pixel vom Rand

// der Form liegt, werden diese zehn Pixel proportional in die Anzahl der

// Pixel auf dem Drucker umgerechnet, um den gleichen Abstand vom Rand zu

// gewährleisten wie auf dem Schirm. Mit scal kann die Größe der Ausgabe

// beeinflußt werden. Bei scal=1 erscheint es auf dem Papier in der selben

// Größe, wie auf einem 800x600 Bildschirm.

// Durch Werte in vSpalte (erste zu druckende Spalte), bSpalte (letzte zu

// druckende Spalte), vZeile (erste zu druckende Zeile) und bZeile (letzte

// zu druckende Zeile) erreicht man Teilausdrucke (Zählung beginnt bei 0!).

// Haben diese Variablen negative Werte, wird das gesamte Grid ausgedruckt.

// Zusätzlich kann man angeben, ob das Grid in der Farbe wie auf dem Schirm

// (farbig=true) oder in Schwarz/Weiss (farbig=false) gedruckt werden soll.

// Siehe auch Stringgrids speichern und laden

// Getestet mit D4 unter Win98

procedure GridDruck(grd:TStringGrid; links,oben, vSpalte,bSpalte,vZeile,bZeile:integer; scal:double; farbig:boolean);

var

  x,y,li,ob,re,un,waag,senk,a:integer;

  fix,grund,schrift:TColor;

  r:Trect;

  function rech(i,j:integer):integer;

  begin

    result:=round(((i*j) / 72) * scal);

  end;



begin

  if vZeile < 0 then vZeile:=0;

  if vSpalte < 0 then vSpalte:=0;

  if (bZeile >= grd.rowcount)or(bZeile < 0) then

    bZeile:=grd.rowcount - 1;

  if (bSpalte >= grd.colcount)or(bSpalte < 0) then

    bSpalte:=grd.colcount - 1;

  if vZeile > bZeile then

  begin

    a:=vZeile;vZeile:=bZeile;bZeile:=a;

  end;

  if vSpalte > bSpalte then

  begin

    a:=vSpalte;vSpalte:=bSpalte;bSpalte:=a;

  end;



  if (scal > 0)and(vZeile < grd.rowcount)and(vSpalte < grd.colcount) then

  begin

    if farbig then

    begin

      fix:=grd.fixedcolor;

      grund:=grd.color;

      schrift:=grd.font.color;

    end

    else

    begin

      fix:=clsilver;

      grund:=clwhite;

      schrift:=clblack;

    end;

    waag:=getdevicecaps(printer.handle,logpixelsx);

    senk:=getdevicecaps(printer.handle,logpixelsy);

    links:=rech(links,waag);

    oben:=rech(oben, senk);

    li:=getdevicecaps(printer.handle,physicaloffsetx)+1+links;

    a:=rech(3,waag);

    with printer do begin

    title:='Grid-Druck';

    BeginDoc;

    if grd.gridlinewidth > 0 then

    begin

      canvas.pen.color:=$333333;

      canvas.pen.width:=1;

      canvas.pen.style:=pssolid

    end

    else

      canvas.pen.style:=psclear;

      canvas.font:=grd.font;

      canvas.font.color:=schrift;

      canvas.font.size:=round((grd.font.size / 0.72) * scal);

      for x:=vSpalte to bSpalte do

      begin

        ob:=getdevicecaps(printer.handle,physicaloffsety)+1+oben;

        re:=li+rech(grd.ColWidths[x]+1,waag);

        for y:=vZeile to bZeile do

        begin

          un:=ob+rech(grd.RowHeights[y]+1,senk);

          if (x < grd.fixedcols)or(y < grd.fixedrows) then

            canvas.brush.color:=fix

          else

            canvas.brush.color:=grund;

          canvas.rectangle(li,ob,re+2,un+2);

          r:=rect(li+a,ob+1,re-a,un-2);

          drawtext(canvas.handle,pchar(grd.Cells[x,y]),length(grd.Cells[x,y]),

          r,DT_SINGLELINE or DT_VCENTER);

          ob:=un;

        end;

        li:=re;

      end;

      enddoc;

    end;

  end;

end;

// Beispielaufrufe

// Ein Grid wird an der äußersten Druckkante in Originalgröße ausgegeben

procedure TForm1.Button1Click(Sender: TObject);

begin

  griddruck(stringgrid1,0,0,-1,-1,-1,-1,1,true);

end;

// Die ersten 3 x 3 Zellen werden mit Randabstand wie auf der Form ausgegeben

procedure TForm1.Button2Click(Sender: TObject);

begin

  griddruck(stringgrid1,stringgrid1.left,stringgrid1.top,0,2,0,2,1,true);

end;

// Ein Grid wird in halber Größe und schwarz/weiss ausgegeben

procedure TForm1.Button1Click(Sender: TObject);

begin

  griddruck(stringgrid1,0,0,0,0,-1,-1,0.5,false);

end;

// von einem Stringgrid wird je ein Viertel

// auf einer eigenen Seite gedruckt

procedure TForm1.Button1Click(Sender: TObject);

var

  s,z:integer;

begin

  s:=stringgrid1.ColCount-1;

  z:=stringgrid1.RowCount-1;

  griddruck(stringgrid1,25,30,0,s div 2,0,z div 2,1,true);

  griddruck(stringgrid1,25,30,s div 2 + 1,s,0,z div 2,1,true);

  griddruck(stringgrid1,25,30,0,s div 2,z div 2 + 1,z,1,true);

  griddruck(stringgrid1,25,30,s div 2 + 1,s,z div 2 + 1,z,1,true);

end;

Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS