Stampa quadro

git-svn-id: svn://10.65.10.50/trunk@3361 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1996-08-09 10:14:07 +00:00
parent ebc486176c
commit de8657e537

View File

@ -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;