diff --git a/include/form.cpp b/include/form.cpp index c1afa3518..49be48b50 100755 --- a/include/form.cpp +++ b/include/form.cpp @@ -2322,12 +2322,12 @@ void TForm::arrange_form() // font di default della stampante (tipicamente 10 cpi). Accade pero' (con la generica // solo testo) che rimanga settato l'ultimo font, di conseguenza quando si effettua una // seconda stampa con posizionamento, stampera' tali caratteri in 17"!!!! Per questo - // motivo e' necessario settare a 17 cpi, almeno la prima volta, la stampante!. - // Quindi, per ovviare a tutto cio, visto che TForm::arange_form() ha senso solo su - // stampanti ad aghi, che le stampanti ad aghi possono andare in emulazione EPSON o IBM, - // che il codice per settare il font draft 17cpi e' lo stesso sia per EPSON che IBM - // CHR(15), allora prima del posizionamento scrivo il chr(15) sulla stampante! - int i, x; + // motivo e' necessario settare a 17 cpi, almeno la prima volta, la stampante!. + // Quindi, per ovviare a tutto cio, visto che TForm::arange_form() ha senso solo su + // stampanti ad aghi, che le stampanti ad aghi possono andare in emulazione EPSON o IBM, + // che il codice per settare il font draft 17cpi e' lo stesso sia per EPSON che IBM + // CHR(15), allora prima del posizionamento scrivo il chr(15) sulla stampante! + int i, x; TString str_pos; if (lpt == NULL) fatal_box("Non rieso ad aprire il device %s.",device); TMask m("ba2100c"); @@ -2337,6 +2337,7 @@ void TForm::arrange_form() for (i=1; i < _ipy; i++) str_pos << "\n"; fprintf(lpt,"%s",(const char*) str_pos); fflush(lpt); // Salta le righe... + fclose(lpt); str_pos.cut(0); //Azzera la stringa di posizionamento for (i=1; i < _ipx; i++) str_pos << " "; //Aggiunge gli spazi necessari... if (_ipx > 0 && _ipy > 0) @@ -2345,16 +2346,21 @@ void TForm::arrange_form() for (i=1; i < x; i++) str_pos << " "; if (_fpx > 0) str_pos << _char_to_pos; // aggiunge il secondo carattere di posizionamento - TString bspc; bspc.fill('\b',str_pos.len()); // Questi sevono per tornare indietro... + TString bspc; bspc.fill('\b',str_pos.len()); // Questi servono per tornare indietro... do - { + { + lpt = fopen(device,"w"); + if (lpt == NULL) fatal_box("Non rieso ad aprire il device %s.",device); fprintf(lpt,"%s",(const char*) bspc); - fprintf(lpt,"%s",(const char*) str_pos); - fflush(lpt); + fprintf(lpt,"%s\r",(const char*) str_pos); + fflush(lpt); + fclose(lpt); } while (m.run() == K_ESC); // cicla sulla stampa posizionamento... const int h = height(odd_page); str_pos.cut(0); for (i=0; i <= h; i++) str_pos << "\n"; + lpt = fopen(device,"w"); + if (lpt == NULL) fatal_box("Non rieso ad aprire il device %s.",device); fprintf(lpt, "%s", (const char*) str_pos); // Salta tante righe quanto e' lungo il form standard fclose (lpt); #if XVT_OS != XVT_OS_WIN