![]() |
String Grid drucken
Hi alle hab nochmal ein kleines Problem:
Hab folgede Prozdeur zum drucken von String Grids gefunden Quelle: ![]()
Delphi-Quellcode:
Naja klappt auch alles ganz gut nur Ich würde gerne das er auch die Linie mit druckt. Jetzt druckt er zwar alles aber ohne die tabelle. Und die Überschrift wprde ich auch gerne von StringGrid1 Landscape in was anderes ändern wäre sehr nett wenn mir jemand sagen könnte wie ich das am besten realiseiren kann.
uses printers;
//StringGrid-Inhalt ausdrucken procedure PrintStringGrid(Grid: TStringGrid; Title: String; Orientation:TPrinterOrientation); var P, I, J, YPos, XPos, HorzSize, VertSize: Integer; AnzSeiten, Seite, Zeilen, HeaderSize, FooterSize, ZeilenSize, FontHeight: Integer; mmx, mmy: Extended; Footer: String; begin //Kopfzeile, Fußzeile, Zeilenabstand, Schriftgröße festlegen HeaderSize := 100; FooterSize := 200; ZeilenSize := 36; FontHeight := 36; //Printer initializieren Printer.Orientation := Orientation; Printer.Title := Title; Printer.BeginDoc; //Druck auf mm einstellen mmx := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH) / GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4; mmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) / GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4; VertSize := Trunc(mmy)*10; HorzSize := Trunc(mmx)*10; SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); //Zeilenanzahl festlegen Zeilen := (VertSize - HeaderSize - FooterSize) div ZeilenSize; //Seitenanzahl ermitteln if Grid.RowCount mod Zeilen <> 0 then AnzSeiten := Grid.RowCount div Zeilen + 1 else AnzSeiten := Grid.RowCount div Zeilen; Seite := 1; //Grid drucken for P := 1 to AnzSeiten do begin //Kopfzeile Printer.Canvas.Font.Height := 48; Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Title) div 2)), -20, Title); Printer.Canvas.Pen.Width := 5; Printer.Canvas.MoveTo(0, -HeaderSize); Printer.Canvas.LineTo(HorzSize, -HeaderSize); //Fußzeile Printer.Canvas.MoveTo(0, -VertSize+FooterSize); Printer.Canvas.LineTo(HorzSize, -VertSize+FooterSize); Printer.Canvas.Font.Height := 36; Footer := 'Seite: ' + IntToStr(Seite) + ' von ' + IntToStr(AnzSeiten); Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Footer) div 2)), -VertSize+150, Footer); //Zeilen drucken Printer.Canvas.Font.Height := FontHeight; YPos := HeaderSize + 10; for I := 1 to Zeilen do begin if Grid.RowCount >= I + (Seite-1)*Zeilen then begin XPos := 0; for J := 0 to Grid.ColCount - 1 do begin Printer.Canvas.TextOut(XPos, -YPos, Grid.Cells[J,I+(Seite-1)*Zeilen-1]); XPos := XPos + Grid.ColWidths[J]*3; end; YPos := YPos + ZeilenSize; end; end; //Seite hinzufügen Inc(Seite); if Seite <= AnzSeiten then Printer.NewPage; end; Printer.EndDoc; end; //Example procedure TForm1.Button1Click(Sender: TObject); begin //Drucken im Querformat PrintStringGrid(Grid,'StringGrid Print Landscape', poLandscape); //Drucken im Hochformat PrintStringGrid(Grid,'StringGrid Print Portrait', poPortrait); end; Danke im Vorraus Crazymodder |
Re: String Grid drucken
Du solltest Dir mal mindestens die erwarteten Parameter der Procedure anschauen, dann ist schon deine halbe Frage beantwortet.
Man muss auch halbwegs wissen was man da macht.(Alles kann man nicht wissen...) :wink: |
Re: String Grid drucken
Naja mit der Überschrift hab ich ja schon hinbekommen aber wie stellt man das ein das er die Linien mitdruckt?
|
Re: String Grid drucken
Indem du einen Kasten um den Text zeichnen lässt.
|
Re: String Grid drucken
Aja könnte mir das jemand nochmal genauer erklären kasten zeichnen geht bestimmt mit canvas ist nur die Frage wie hehe. Also wäre über eure Hilfe sehr erfreut.
Danke im Vorraus |
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