Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Allgemein Drucken ? (https://www.delphipraxis.net/42092-allgemein-drucken.html)

Cyberbob_at_tot 13. Mär 2005 15:55


Allgemein Drucken ?
 
Hallo zusammen,

ich will gerne ein Stringgrid drucken, dazu habe ich hier im Forum auch eine Procedure gefunden.
Delphi-Quellcode:
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;
Ist mir aber alles zu wirsch, habe das das Problem, das ich die Seite nicht ins Querformat bekomme und der ausdruck einfach scheiße aussieht!

Meine Frage ich nun, kann man es hinbekommen, eine Standdartseite zu machen wo dann das Stringgrid ausgeben wird ?

z.b einen Schriftzug und ein Bild und um den Inhalt des Stringgrid einen Rahmen.

Gibt es da komponenten oder Anleitungen ?

MFG

Cyberbob

Dani 16. Mär 2005 09:19

Re: Allgemein Drucken ?
 
Hi,

die JVCL bietet glaube ich ein paar Komponenten, mit denen du Strings, Bilder usw. rendern kannst. http://jvcl.sourceforge.net

leddl 16. Mär 2005 09:27

Re: Allgemein Drucken ?
 
[OT]
Sorry, das kann ich mir jetzt grad nicht verkneifen! :mrgreen:
Zitat:

Standdartseite
StandDart kriegste in fast jeder Kneipe! :lol:
[/OT]

Jelly 16. Mär 2005 09:45

Re: Allgemein Drucken ?
 
Zitat:

Zitat von leddl
[OT]
StandDart kriegste in fast jeder Kneipe! :lol:
[/OT]

Hehe, der war gut :mrgreen:

Zum Thema...
Ich nutze für solche Zwecke die Komponente TEkRTF. Damit erstellst du z.B. in Word ein RTF Template, was dein Layout darstellt.

Cyberbob_at_tot 16. Mär 2005 12:41

Re: Allgemein Drucken ?
 
ja man die Rechtschreibfehler, schleichen sich eben immer ein, wenn man schnell tippt!

egal also zum Thema, die von Jelly vorgeschlagene Komponente hört sich genau nach dem an was ich suche.
Muss ich mir daher mal ansehen, danke für die Vorschläge, nicht immer wegen Rechtschreibfehler meckern, Jungs!

leddl 16. Mär 2005 12:45

Re: Allgemein Drucken ?
 
Jetzt muß ich glatt nochmal OT, aber geht net anders.
Hab ja net gemeckert wegen dem Rechtschreibfehler. Ich fand den nur lustig. Ich mein Standard mit "t" sieht man öfters, aber dann noch 2 "d"s? Das wars wert! :mrgreen:
Also net angemacht fühlen, bei sowas kann ich nur einfach nicht widerstehen! ;)

Cyberbob_at_tot 16. Mär 2005 12:47

Re: Allgemein Drucken ?
 
Kein Problem!

p3ps1 27. Apr 2005 12:29

Re: Allgemein Drucken ?
 
Ich hab mittels der Suchen-Funktion die obige Procedure zum drucken gefunden.
Klappt auch alles wunderbar.
Ich hab die Procedure mit

Delphi-Quellcode:
GridDruck(sg1;0,0,1);
aufgerufen um das ganze stringgrid zu druckn was auch geklappt hat.
Aber was muss ich jetzt übergeben, wenn ich eine bestimmte Zeile oder Spalte weglassen will?

leddl 27. Apr 2005 12:36

Re: Allgemein Drucken ?
 
Zitat:

Zitat von p3ps1
Aber was muss ich jetzt übergeben, wenn ich eine bestimmte Zeile oder Spalte weglassen will?

Ganz einfach: Ein StringGrid, daß diese Zeile oder Spalte nicht enthält. :mrgreen:
Oder aber du schreibst die Funktion so um, daß du als Parameter angeben kannst, welche Zeilen/Spalten weggelassen werden sollen. Danach mußt du dir nur noch die beiden For-Schleifen dementsprechend anpassen.

Cyberbob_at_tot 27. Apr 2005 14:05

Re: Allgemein Drucken ?
 
super idee! so einfach ! werd ich machen! danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Seite 1 von 2  1 2      

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