Jak najprostsze drukowanie kilku danych + tabela

0

Robie program ktory na koncu swojego dzialania ma wydrukowac wyniki w postaci:
Naglowek
Wstepny opis
Tabela z wynikami
jakies podsumowanie

probowalem Rave Report's ale tam sa dosc duze problemy z drukowaniem tabeli ktora nie jest baza danych, no i jeszcze problem z polskimi znakami.

ma ktos pomysl jak najszybciej zrobic zeby program najpierw mogl pokazac podglad wydruku a potem wydrukowac strone?

dodam tylko ze tabelka niekoniecznie bedzie sie miescic na jednej stronie.

0

FastReport, QuickReport, malowanie po płutnie drukarki, i jeszcze pewnie kilkanaście innych możliwości

0

no tak.. fajnie.. ale tyle to i ja wiem..
a uzywam Delphi 7 wiec FastReport i QReport odpada..

0

znaczy miało być FreeReport co nie zmienia podstawowego pytania, PONIEWAŻ??

0

Odpowiedź na twoje pytanie jest bliżej niż myślisz. Zapraszam na FAQ serwisu 4p. Można znaleź wiele ciekawych rzeczy. Mi udało znaleźć ten oto fragment kodu, który drukuje StringGrida. Przeklejam go żywcem z FAQ choć, nie powinienem.

//*******************************************************
// Drukowanie
//*******************************************************
procedure TForm1.Button4Click(Sender: TObject);
var
  r: TRect;
  i: Integer;
  s: string;
  pozycja : integer;

begin
     Printer.Canvas.Font.Size:=czcionka;
 
     Printer.BeginDoc;
     Canvas.Brush.Style := bsClear;
     kolumna:= (Printer.Pagewidth - 340)div 6; // obliczam szerokość kolumny

// tu wpisuje pr\ykładowy nagłówek
     Printer.Canvas.TextOut(200,500,'  '+ DateToStr(Date)+'         ' +TimeToStr(GetTime)+
   '                Razem worków = '+ edit2.text +'        Razem sztuk = '+ edit3.text  );


 //Tutaj rysuję kratki
  with Printer do
  begin
   pozycja:=890 ;
   for i := 0 to dl_tabeli do
     begin  //wiersze
     Canvas.MoveTo(200, pozycja); // ustaw kursor we wlasciwym miejscu
     Canvas.LineTo(Printer.Pagewidth - 200,pozycja ); // rysuj linie
     pozycja:= 1220 + (i * (czcionka + wiersz)) ;
   end;

   for i := 0 to 7 do
   begin  //kolumny
     Canvas.MoveTo(i*kolumna+180,890); // ustaw kursor we wlasciwym miejscu
     Canvas.LineTo(i*kolumna+180,Printer.PageHeight - 200); // rysuj linie
   end;


  end;



// dla większego komfortu utworzyłem dodatkowe zmienne do pozycjonowania wydruku , oraz liter

   for i := 0 to dl_tabeli do // pierwsza kolumna
   begin
     s :=  StringGrid5.cells[0,i]  ;
     Printer.Canvas.TextOut(p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
   end;


   for i := 0 to dl_tabeli do // druga kolumna
   begin
     s :=  StringGrid5.cells[1,i]  ;
     Printer.Canvas.TextOut(kolumna + p_kolumny,1000 +(i * (czcionka + wiersz)+ p_wiersza),s );
   end;

   for i := 0 to dl_tabeli do
   begin
     s :=  StringGrid5.cells[2,i]  ;
     Printer.Canvas.TextOut(2*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
   end;

   for i := 0 to dl_tabeli do
     begin
     s :=  StringGrid5.cells[3,i]  ;
     Printer.Canvas.TextOut(3*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
   end;

   for i := 0 to dl_tabeli do
     begin
     s :=  StringGrid5.cells[4,i]  ;
     Printer.Canvas.TextOut(4*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
   end;

   for i := 0 to dl_tabeli do
     begin
     s :=  StringGrid5.cells[6,i]  ;
     Printer.Canvas.TextOut(5*kolumna+p_kolumny,1000 +(i * (czcionka + wiersz)+p_wiersza),s );
   end;
   Printer.enddoc;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1