From de8657e53747fe87f29b1c27bc06fddbb0964f6b Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 9 Aug 1996 10:14:07 +0000 Subject: [PATCH] Stampa quadro git-svn-id: svn://10.65.10.50/trunk@3361 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- m770/77stq.cpp | 186 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 162 insertions(+), 24 deletions(-) diff --git a/m770/77stq.cpp b/m770/77stq.cpp index cc7c50b99..e3d4095ab 100755 --- a/m770/77stq.cpp +++ b/m770/77stq.cpp @@ -5033,12 +5033,10 @@ class TBase2 : public TDicForm long _codditta; protected: void stampa_corpo(TPrinter& pr); - virtual int dic_form_len() const { return BASE_FORMLEN; } - virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } - virtual void stampa_totali(TPrinter& pr) {} - virtual void aggiorna_totali(const char tipo) {} - virtual void set_body(TPrinter& pr, const char tipo) {} - virtual int prima_riga(PaginaQuadro p) const { return 1;} + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} public: virtual bool print(const long codditta, const long NumFis, const long NumNoFis); TBase2(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} @@ -5066,38 +5064,167 @@ bool TBase2::print(const long codditta, const long NumFis, const long NumNoFis) TPrinter& pr = printer(); _codditta=codditta; filtra(codditta); + _RigaCorr=0; (*cur)=0L; -// jump_to_line(pr, prima_riga(PRIMA)); + jump_to_line(pr, prima_riga(PRIMA)); stampa_corpo(pr); next_page(pr); return TRUE; } +class TBase3 : public TDicForm +{ + private: + long _codditta; + protected: + void stampa_testata(TPrinter& pr); + void stampa_corpo(TPrinter& pr); + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase3(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} + virtual ~TBase3() {} +}; + +void TBase3::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +void TBase3::stampa_corpo(TPrinter& pr) +{ + TPrint_section& body = section('B', odd_page); + body.reset(); + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TBase3::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + filtra(codditta); + _RigaCorr=0; + (*cur)=0L; + jump_to_line(pr, prima_riga(PRIMA)); + stampa_testata(pr); + stampa_corpo(pr); + next_page(pr); + return TRUE; +} + +class TBase4 : public TDicForm +{ + private: + long _codditta; + protected: + void stampa_testata(TPrinter& pr); + void stampa_corpo(TPrinter& pr); + virtual int dic_form_len() const { return BASE_FORMLEN; } + virtual void next_page(TPrinter& pr) { fill_page(pr, -1); } + virtual void set_body(TPrinter& pr, const char tipo) {} + virtual int prima_riga(PaginaQuadro p) const { return 4;} + public: + virtual bool print(const long codditta, const long NumFis, const long NumNoFis); + TBase4(const char* sNomeForm, const char* quadro) : TDicForm(sNomeForm, quadro) {} + virtual ~TBase4() {} +}; + +void TBase4::stampa_testata(TPrinter& pr) +{ + TPrint_section& hh = section('H', first_page); + hh.reset(); + hh.update(); + const int hhr = hh.height(); + for (int i = 0; i < hhr; i++) + { + pr.print(hh.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +void TBase4::stampa_corpo(TPrinter& pr) +{ + TPrint_section& body = section('B', odd_page); + body.reset(); + body.update(); + const int body_righe = body.height(); + for (int i = 0; i < body_righe; i++) + { + pr.print(body.row(i)); + _RigaCorr++; + } + if (usa_progind()) + progind()->addstatus(1); +} + +bool TBase4::print(const long codditta, const long NumFis, const long NumNoFis) +{ + TCursor* cur = cursor(); + TPrinter& pr = printer(); + _codditta=codditta; + filtra(codditta); + _RigaCorr=0; + (*cur)=0L; + jump_to_line(pr, prima_riga(PRIMA)); + stampa_testata(pr); + stampa_corpo(pr); + next_page(pr); + return TRUE; +} + class TStampaBase : public TStampaQuadro { private: - TBase1* _fBase1; - TBase2* _fBase2; - TRelation* _rel; - TCursor* _cur, *_cur2; - - protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool conta_tipi_per() const { return FALSE; } - virtual TDicForm* get_form() const { return _fBase1; } - virtual TCursor* get_cursor() const { return _cur; } - virtual bool print_quadro(const int OffsetDitta, const bool modulaser); - - public: - TStampaBase(char livel) : TStampaQuadro("Base", livel) { } + TBase1* _fBase1; + TBase2* _fBase2; + TBase3* _fBase3; + TBase4* _fBase4; + TRelation* _rel; + TCursor* _cur, *_cur2, *_cur3, *_cur4; + + protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool conta_tipi_per() const { return FALSE; } + virtual TDicForm* get_form() const { return _fBase1; } + virtual TCursor* get_cursor() const { return _cur; } + virtual bool print_quadro(const int OffsetDitta, const bool modulaser); + + public: + TStampaBase(char livel) : TStampaQuadro("Base", livel) { } }; bool TStampaBase::user_create() { _fBase1 = new TBase1("77base1", "Base"); - _fBase2 = new TBase2("77base2", "Base"); + _fBase2 = new TBase2("77base2", "Base"); + _fBase3 = new TBase3("77base3", "Base"); + _fBase4 = new TBase4("77base4", "Base"); // Adesso bisogna chiamare set_cursor per impostare il cursore dentro // al form. Sarebbe meglio fare in modo che il form usi sempre il cursore // letto dal .frm, senza bisogno di passarglielo dall'applicazione @@ -5105,6 +5232,11 @@ bool TStampaBase::user_create() _fBase1->set_cursor(_cur); _cur2 = _fBase2->TForm::cursor(); _fBase2->set_cursor(_cur2); + _cur3 = _fBase3->TForm::cursor(); + _fBase3->set_cursor(_cur3); + _cur4 = _fBase4->TForm::cursor(); + _fBase4->set_cursor(_cur4); + return TRUE; } @@ -5113,6 +5245,8 @@ bool TStampaBase::user_destroy() // delete _cur; delete _fBase1; delete _fBase2; + delete _fBase3; + delete _fBase4; return TRUE; } @@ -5127,7 +5261,9 @@ bool TStampaBase::print_quadro(const int OffsetDitta, const bool modulaser) _fBase1->set_modulaser(modulaser); _fBase2->set_modulaser(modulaser); - + _fBase3->set_modulaser(modulaser); + _fBase4->set_modulaser(modulaser); + // Dice se deve eseguire il posizionamento del foglio. // Se stampa piu' ditte va eseguito solo sulla prima // Occhio a non spostarlo nel ciclo. @@ -5178,6 +5314,8 @@ bool TStampaBase::print_quadro(const int OffsetDitta, const bool modulaser) _fBase1->print(codditta, fis, nofis); _fBase2->print(codditta, fis, nofis); + _fBase3->print(codditta, fis, nofis); + _fBase4->print(codditta, fis, nofis); } printer().close(); return ok;