Ripetizione stampa con Harbour
Moderator: Enrico Maria Giordano
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy
Ripetizione stampa con Harbour
Salve, mi e' capitato che un cliente utilizzando un programma con fw (16) funziona bene (stampando una fattura)
Lo stesso programma compilato con harbour funziona tutto bene ad eccezione che nella stampa delle fatture (anteprima) ripresenta sempre la precedente fattura stampata....come se non cancellasse i wmf all'uscita della stampa!
Possibile ?
Mai capitato a qualcuno ?
Dato che il cliente e' molto distante non posso verificarlo di persona ma ci devo credere. Io pero' non riesco a simulare tale problema sul mio PC.
Avevo gia' postato questo problema ma non sono riuscito a risolverlo.
Si accetta qualunque consiglio.
Piscicelli/Zingoni
Lo stesso programma compilato con harbour funziona tutto bene ad eccezione che nella stampa delle fatture (anteprima) ripresenta sempre la precedente fattura stampata....come se non cancellasse i wmf all'uscita della stampa!
Possibile ?
Mai capitato a qualcuno ?
Dato che il cliente e' molto distante non posso verificarlo di persona ma ci devo credere. Io pero' non riesco a simulare tale problema sul mio PC.
Avevo gia' postato questo problema ma non sono riuscito a risolverlo.
Si accetta qualunque consiglio.
Piscicelli/Zingoni
- Marco Turco
- Posts: 858
- Joined: Fri Oct 07, 2005 12:00 pm
- Location: London
- Contact:
Questo problema si verifica generalmente a causa di possibili bug di programmazione (magari in talune circostanze non "chiudi" la pagina oppure apri più volte una nuova pagina o ancora non chiudi la stampa) oppure a causa di problemi di stampa (finisce la carta o si verifica un errore irreversibile di stampa). In questi casi il file wmf può rimanere aperto e quando crei una nuova stampa, poiché il nome del file wmf viene generato con una numerazione progressiva, se il file già esiste ed è aperto, non potrà essere sovrascritto dalla nuova stampa ed è per questo motivo che ti appare sempre la pagina stampata in precedenza.
Io ho risolto definitivamente questo problema modificando la classe nella quale viene generato il nome wmf (non ricordo se printer.prg o tmetafil.prg).
1) Faccio generare i file wmf in una cartella TMP che ho creato nella mia applicazione. Questo perché Antonio crea i file wmf nella cartella dei file temporanei di Windows che però in caso di accesso al sistema diverso da Administrator può creare alcuni problemi nella creazione dei file.
2) Quando creo una stampa cancello prima tutti i wmf della cartella TMP e comunque quando genero il nome, verifico prima che non sia già presente un file con lo stesso nome altrimenti passo alla numerazione successiva.
Saluti
Marco
Io ho risolto definitivamente questo problema modificando la classe nella quale viene generato il nome wmf (non ricordo se printer.prg o tmetafil.prg).
1) Faccio generare i file wmf in una cartella TMP che ho creato nella mia applicazione. Questo perché Antonio crea i file wmf nella cartella dei file temporanei di Windows che però in caso di accesso al sistema diverso da Administrator può creare alcuni problemi nella creazione dei file.
2) Quando creo una stampa cancello prima tutti i wmf della cartella TMP e comunque quando genero il nome, verifico prima che non sia già presente un file con lo stesso nome altrimenti passo alla numerazione successiva.
Saluti
Marco
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Non puoi dire direttamente a Linares di correggere questo problema ?
Certo che l'anteprima di stampa non funziona correttamente e privo di molte cose rispetto alle altre anteprime di stampa degli altri linguaggi
Per esempio a scuola abbiamo un programma del MIUR ( ministero) lui usa Powerbuilder e li c'è un'anteprima molto accattivante....
> Conversione in formati grafici e testo ( txt,pdf,doc)
> righello
>visualizzazione come in winword ( 10,25,50,75,100,200,400 per quanto riguarda lo zoom e poi in 2/4/6/8/10 x X pagine per la visualizzazione in un unica finestra di tutte le pagine del documento
> possibilità di inserire un image ..noi usiamo questo per inserire le firme scannerizzate in fondo al documento
> le stampe sono parametrizzabile dall'utente infatti è possibile creare un nuovo modello di stampa il programma elenca tutti i campi possbili e te li fa inserire nel documento ....
Certo quando arriveremo a questi livelli potremmo dire che il rpreview di stampa funziona correttamente .
Certo che l'anteprima di stampa non funziona correttamente e privo di molte cose rispetto alle altre anteprime di stampa degli altri linguaggi
Per esempio a scuola abbiamo un programma del MIUR ( ministero) lui usa Powerbuilder e li c'è un'anteprima molto accattivante....
> Conversione in formati grafici e testo ( txt,pdf,doc)
> righello
>visualizzazione come in winword ( 10,25,50,75,100,200,400 per quanto riguarda lo zoom e poi in 2/4/6/8/10 x X pagine per la visualizzazione in un unica finestra di tutte le pagine del documento
> possibilità di inserire un image ..noi usiamo questo per inserire le firme scannerizzate in fondo al documento
> le stampe sono parametrizzabile dall'utente infatti è possibile creare un nuovo modello di stampa il programma elenca tutti i campi possbili e te li fa inserire nel documento ....
Certo quando arriveremo a questi livelli potremmo dire che il rpreview di stampa funziona correttamente .
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
si ok
ancora con sti esempi
io ti voglio far capire una cosa : la situazione mi è capitata tempo fa
una procedura non funzionava con i footers di wbrowse di hernan
ho fatto un programmino di test semplice questo funzionava
mi sono impazzito una settimana per trovare l'errore poi ho scoperto che avevano cambiato il nome delle variabili
tu mi dirai ma come faccio io a provare il bug con un semplice test
bene ma non sempre il bug viene fuori
quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato
ma sapevo benissimo che era un bug di fw.
Prima di abbellire le classi con tante estetiche che non servono poi a niente come le ultime modifiche che ha fatto linares per il rpreview dei bottoni secondo me servivano tante cose utili come la correzzione di questo bug .
Una correzzione utile per esempio è stata la conversione da wmf a emf
gli faccio un applauso per questo...
non so se rendo l'idea
ancora con sti esempi
io ti voglio far capire una cosa : la situazione mi è capitata tempo fa
una procedura non funzionava con i footers di wbrowse di hernan
ho fatto un programmino di test semplice questo funzionava
mi sono impazzito una settimana per trovare l'errore poi ho scoperto che avevano cambiato il nome delle variabili
tu mi dirai ma come faccio io a provare il bug con un semplice test
bene ma non sempre il bug viene fuori
quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato
ma sapevo benissimo che era un bug di fw.
Prima di abbellire le classi con tante estetiche che non servono poi a niente come le ultime modifiche che ha fatto linares per il rpreview dei bottoni secondo me servivano tante cose utili come la correzzione di questo bug .
Una correzzione utile per esempio è stata la conversione da wmf a emf
gli faccio un applauso per questo...
non so se rendo l'idea
Best Regards, Saludos
Falconi Silvio
Falconi Silvio
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
A me non è mai capitato, non so che dirti.Silvio wrote:quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato ma sapevo benissimo che era un bug di fw.
EMG
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy
La mia procedura di cancellazione dei files temporanei e' stata inserita nell'action dell'uscita del rpreview.prg
Prima di uscire cancello i wmf temporanei e con fw16 funziona sempre (anche utilizzando la funzione fattrib() per rilasciare il file qualore non fosse cancellabile.)
Anche con harbur funziona quasi sempre ad eccezione di qualche volta che non capisco da cosa dipenda.
Provando a mano a cancellare tale file (con l'exe ancora running) mi dice che il file e' aperto da un altro processo. Sicuramente, almeno penso, dall'exe di harbour (se i files da cancellare sono 30, 29 li cancella e 1 no)
Non mi rimane in questo caso di dare un messaggio (di mascheramento) e dire all'utente: PROBLEMA DI WINDOWS CON I FIELS TEMPORANEI, SI PREGA DI USCIRE E RIENTRARE NEL PROGRAMMA.
Solo cosi' poi funziona e questo, penso, e' la dimostrazione che c'e' qualche piccolo bug da qualche parte.
Purtroppo il problema non e' ripetibile o almeno dopo 3000 lanci e anteprime non so spiegarmi quando e come succede.
Mistero del s/w!
Ciao
Prima di uscire cancello i wmf temporanei e con fw16 funziona sempre (anche utilizzando la funzione fattrib() per rilasciare il file qualore non fosse cancellabile.)
Anche con harbur funziona quasi sempre ad eccezione di qualche volta che non capisco da cosa dipenda.
Provando a mano a cancellare tale file (con l'exe ancora running) mi dice che il file e' aperto da un altro processo. Sicuramente, almeno penso, dall'exe di harbour (se i files da cancellare sono 30, 29 li cancella e 1 no)
Non mi rimane in questo caso di dare un messaggio (di mascheramento) e dire all'utente: PROBLEMA DI WINDOWS CON I FIELS TEMPORANEI, SI PREGA DI USCIRE E RIENTRARE NEL PROGRAMMA.
Solo cosi' poi funziona e questo, penso, e' la dimostrazione che c'e' qualche piccolo bug da qualche parte.
Purtroppo il problema non e' ripetibile o almeno dopo 3000 lanci e anteprime non so spiegarmi quando e come succede.
Mistero del s/w!
Ciao
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
- Marco Turco
- Posts: 858
- Joined: Fri Oct 07, 2005 12:00 pm
- Location: London
- Contact:
x Piscitelli:
per risolvere il problema di una eventuale pagina rimasta aperta che ti impedisce di visualizzare correttamente la successiva anteprima, sostituisci il metodo startpage con questo allegato.
Si tratta in pratica di verificare se esiste già un file con un certo nome prima di utilizzarlo per il metafile. Se esiste ne utilizzo un altro.
Ciao
Marco
METHOD _StartPage() CLASS TPrinter
local lSetFixed,i,cWmfFileName
if ::hDC == 0
return nil
endif
lSetFixed := Set( _SET_FIXED, .F. )
if !::lMeta .and. ! ::lStarted
::lStarted := .T.
StartDoc( ::hDC, ::cDocument )
endif
::nPage++
if ::lMeta
for i:=1 to 9999
cWmfFileName:=::cDir + "\tmp" + PadL( i, 4, "0" ) + ".wmf"
if .not. file(cWmfFileName)
exit
endif
next
AAdd( ::aMeta, cWmfFileName)
::hDCOut := CreateMetaFile( ATail( ::aMeta ) )
else
StartPage( ::hDC )
endif
Set( _SET_FIXED, lSetFixed )
return nil
per risolvere il problema di una eventuale pagina rimasta aperta che ti impedisce di visualizzare correttamente la successiva anteprima, sostituisci il metodo startpage con questo allegato.
Si tratta in pratica di verificare se esiste già un file con un certo nome prima di utilizzarlo per il metafile. Se esiste ne utilizzo un altro.
Ciao
Marco
METHOD _StartPage() CLASS TPrinter
local lSetFixed,i,cWmfFileName
if ::hDC == 0
return nil
endif
lSetFixed := Set( _SET_FIXED, .F. )
if !::lMeta .and. ! ::lStarted
::lStarted := .T.
StartDoc( ::hDC, ::cDocument )
endif
::nPage++
if ::lMeta
for i:=1 to 9999
cWmfFileName:=::cDir + "\tmp" + PadL( i, 4, "0" ) + ".wmf"
if .not. file(cWmfFileName)
exit
endif
next
AAdd( ::aMeta, cWmfFileName)
::hDCOut := CreateMetaFile( ATail( ::aMeta ) )
else
StartPage( ::hDC )
endif
Set( _SET_FIXED, lSetFixed )
return nil
-
- Posts: 76
- Joined: Wed Oct 12, 2005 5:52 pm
- Location: Milan,Italy