#include #include #include "lvlib.h" #include "lv0201.h" #include "lv0b00.h" class TStampa_tabelle_lv : public TSkeleton_application { protected: virtual void main_loop(); virtual void print(); }; void TStampa_tabelle_lv::print() { WINDOW win = cur_win(); // Trova la finestra corrente di XVT if (win != NULL_WIN && win != TASK_WIN) // E' una finestra valida? { TWindow* w = (TWindow*)xvt_vobj_get_data(win); // Risale alla classe originale if (w != NULL) // E' una TWindow valida? (sarebbe TMask) w->stop_run(K_ENTER); // Simula la pressione del bottone stampa } } void TStampa_tabelle_lv::main_loop() { bool repcom = false; // Costruisce il nome del report in base alla riga di comando TFilename rep; if (argc() > 2) { rep = argv(2); rep.lower(); if (rep == "repcom") { rep.cut(0); repcom = true; } else { rep.strip("-&%$^"); if (rep.len() == 3) rep.insert("lvst"); rep.ext("rep"); } } TLV_report r; bool ok = true; while (ok) { if (repcom) ok = handle_repcom(r); else { if (rep.starts_with("lv0a00")) ok = handle_lv0a00(r, rep); else { TFilename mskname(rep); mskname.ext(""); TMask m(mskname); if (m.find_by_id(F_REPORT)) { ok = m.run() == K_ENTER; if (ok) { TFilename crep = m.get(F_REPORT); ok = r.load(crep.full() ? crep : rep); r.mask2report(m); } } else ok = r.load(rep); } } if (ok) { TReport_book b; ok = b.add(r); // Richiede parametri di stampa in base alla maschera omonima if (ok) if (b.pages() > 0) b.print_or_preview(); // Stampa effettivamente else warning_box (TR("Nessun record estratto per i parametri inseriti")); } } } int lv0200(int argc, char* argv[]) { TStampa_tabelle_lv app; app.run(argc, argv, TR("Stampe lavanderie")); return 0; }