![]() |
StringGrid Drucken
Hallo! Ich möchte ein StringGrid drucken.
Ich habe bereits die Suche verwendet, aber bisher nichts passendes gefunden. Ich möchte festlegen können, welche Zeilen gedruckt werden, also z.B. 1 bis 3 oder 9 bis 99. Auserdem sollten Horizontale und wenn möglich vertikale Trennlinien vorhanden sein, und der gesamte TExt einer ZElle gedruckt werden (also der Inhalt soll nicht abgeschnitten werden.) Kann mir jemand genau erklären, wie ich so etwas realisieren kann? PS: HAbe mit drucken bisher keine erfahrung! |
Re: StringGrid Drucken
|
Re: StringGrid Drucken
kann man es auch so drucken,dass er eine neue Seite druckt, wenn der stringgrid länger ist, als auf eine Seite passt, wenn ich diesen code verwende?
Delphi-Quellcode:
uses printers;
procedure GridDruck(grd:TStringGrid;links,oben:word;scal:double); var x,y,li,ob,re,un,waag,senk,h,a: integer; s: string; function rech(i,j:integer):integer; begin result:=round(((i*j) / 72) * scal); end; begin if scal > 0 then begin waag:=getdevicecaps(printer.handle,logpixelsx); senk:=getdevicecaps(printer.handle,logpixelsy); links:=rech(links,waag); oben:=rech(oben, senk); a:=rech(3,waag); li:=getdevicecaps(printer.handle,physicaloffsetx)+1+links; with printer do begin s:='Grid-Druck'; title:=s; BeginDoc; canvas.font:=grd.font; canvas.font.size:=round((grd.font.size / 0.72) * scal); h:=canvas.textheight(s); canvas.pen.color:=$333333; for x:=0 to grd.colcount-1 do begin if grd.gridlinewidth > 0 then begin canvas.pen.style:=pssolid; canvas.pen.width:=1; end else canvas.pen.style:=psclear; ob:=getdevicecaps(printer.handle,physicaloffsety)+1+oben; re:=li+rech(grd.ColWidths[x]+1,waag); for y:=0 to grd.rowcount-1 do begin un:=ob+rech(grd.RowHeights[y]+1,senk); if (x < grd.fixedcols) or (y < grd.fixedrows) then canvas.brush.color:=grd.fixedcolor else canvas.brush.color:=grd.color; canvas.rectangle(li,ob,re,un); canvas.brush.style:=bsclear; canvas.textrect(rect(li+a,ob+1,re-a,un-1), li+a,ob+(un-ob-h)div 2,grd.Cells[x,y]); ob:=un; end; canvas.brush.color:=clwhite; canvas.pen.style:=psclear; canvas.rectangle(li,ob+1,re,ob+h); li:=re; end; enddoc; end; end; end; |
Re: StringGrid Drucken
also ich hab mir das jetzt so gedacht, zu umgehen..
auf eine Seite passen 32 Vokabeln+ Überschrift ich lade einfach immer nur 32 Vokabeln in die Stringlist, durcke, lösche die 32 und lade 32 neu.. ABER.. es klappt nicht, könnt ihr mir vielleicht helfen, woran das liegt?
Delphi-Quellcode:
procedure Tdrucken.Button2Click(Sender: TObject);
var i, i2, i3:integer; vokabel,Loesung:string; sl: TStringlist; begin sl:=TStringlist.Create; sl:=stringlistx; for i2:=0 to round(sl.Count/32) do begin for i:=0 to 32 do begin splitstr(sl.Strings[i],'=',Vokabel, Loesung); Stringgrid1.Cells[1,i+1]:=Vokabel; Stringgrid1.Cells[0,i+1]:=Loesung; griddruck(stringgrid1,0,0,1); for i3:=0 to 32 do begin sl.Delete(i3); end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz