Parametri di stampa

Moderator: Enrico Maria Giordano

User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

ho preparato questo test

Code: Select all

#include "fivewin.ch"

function main()

   local oDlg, cCombo := 9, oBtn

local aItems :={ "DMPAPER_LETTER       ",  ;
"DMPAPER_LETTERSMALL  ",  ;
"DMPAPER_TABLOID      ",  ;
"DMPAPER_LEDGER       ",  ;
"DMPAPER_LEGAL        ",  ;
"DMPAPER_STATEMENT    ",  ;
"DMPAPER_EXECUTIVE    ",  ;
"DMPAPER_A3           ",  ;
"DMPAPER_A4           ",  ;
"DMPAPER_A4SMALL      ",  ;
"DMPAPER_A5           ",  ;
"DMPAPER_B4           ",  ;
"DMPAPER_B5           ",  ;
"DMPAPER_FOLIO        ",  ;
"DMPAPER_QUARTO       ",  ;
"DMPAPER_10X14        ",  ;
"DMPAPER_11X17        ",  ;
"DMPAPER_NOTE         ",  ;
"DMPAPER_ENV_9        ",  ;
"DMPAPER_ENV_10       ",  ;
"DMPAPER_ENV_11       ",  ; 
"DMPAPER_ENV_12       ",  ;
"DMPAPER_ENV_14       ",  ;
"DMPAPER_CSHEET       ",  ;
"DMPAPER_DSHEET       ",  ;
"DMPAPER_ESHEET       ",  ;
"DMPAPER_ENV_DL       ",  ;
"DMPAPER_ENV_C5       ",  ;
"DMPAPER_ENV_C3       ",  ;
"DMPAPER_ENV_C4       ",  ;
"DMPAPER_ENV_C6       ",  ;
"DMPAPER_ENV_C65      ",  ;
"DMPAPER_ENV_B4       ",  ;
"DMPAPER_ENV_B5       ",  ;
"DMPAPER_ENV_B6       ",  ;
"DMPAPER_ENV_ITALY    ",  ;
"DMPAPER_ENV_MONARCH  ",  ;
"DMPAPER_ENV_PERSONAL ",  ;
"DMPAPER_FANFOLD_US   ",  ;
"DMPAPER_FANFOLD_STD_GERMAN",  ;
"DMPAPER_FANFOLD_LGL_GERMAN "}


   DEFINE DIALOG oDlg FROM 2, 2 TO 18, 60 TITLE "Selezione formati di stampa" ;
      STYLE nOr( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, 4 )


   @ 2, 2 COMBOBOX cCombo ITEMS aItems SIZE 200, 100 ON CHANGE PrnSetPage( nAT )



   @ 3,  4 BUTTON "&Ok" OF oDlg SIZE 40, 12
   @ 3, 12 BUTTON oBtn PROMPT "&Cancel" OF oDlg SIZE 40, 12 ;
      ACTION ( MsgInfo( NaT ), lExit := .t., oDlg:End() )


   ACTIVATE DIALOG oDlg CENTERED

return nil


1) non setta la pagina
2) non so come fare per darmi iparametri di lunghezza e larghezza
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Silvio wrote:1) non setta la pagina
Come fai a dirlo? Hai provato a stampare? Comunque ti confermo che la funzione PrnSetPage() funziona dato che l'ho usata in un programma.
Silvio wrote:2) non so come fare per darmi iparametri di lunghezza e larghezza
Con il metodo TPrinter:GetPhySize(), naturalmente dopo aver definito la stampante.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

ripeto non devo stampare niente

ripeto ER lo fa non settando nessuna stampante ( ho provato il programma su un computer senza stampante installata)

Ho un vecchio programma demo della infoser ( l'anteprima di stampa di questo programma risale al 2001 , alle vecchie anteprime circa ver fw 18 -19.5)

In questo programma c'è un design e lui fa selezionare il tipo del foglio e automaticamente restituisce nei get la larghezza e l'altezza del foglio.

Quindi se si poteva fare nel 2001 si potrebbe certamente fare adesso.

Ho controllato non c'è nessun archivio con parametri dei fogli nel programma demo suddtto quindi o li hanno inseriti su un doppio array ( e questo mi appare improbabile) o c'è una funzione che noi a questo punto non conosciamo che restituisce la larghezza e l'altezza del foglio passato il tipo del foglio.

A parte che ho saputo che nella versione nuova di fw c'è pagesetup che fa in pratica quello che io voglio fare ....e anche questa funzione pare che non setta nessuna stapante(oprn) prima infatti si puo' compilare un programma con semplicemente chiamando questa funzione :

Code: Select all

# include"fivewin.ch"
func Main()
pagesetup()
return nil 
ma io volevo fare un dialog simile ( dato che non ho l'agg.) inserendo anche altri parametri che a me servono per un programma.
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Silvio wrote:ripeto non devo stampare niente
Tu hai detto: "PrnSetPage() non setta la pagina". Probabilmente non ho capito cosa intendevi ma come fai a dire che non setta la pagina? Hai chiamato forse qualche funzione che te lo dice? Io l'unico modo che conosco per verificare se il formato pagina scelto è stato effettivamente impostato è di provare a stampare. Io l'ho fatto e funziona, anche in anteprima di stampa.

Per quanto riguarda le dimensioni del foglio, come ho già detto, non ne so niente.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

I valori sono costanti e non dipendono dalla stampante. Basta che riempi, ad esempio, un array parallelo a quello dei nomi dei formati ma contenente i valori corrispondenti e poi peschi da quest'ultimo il valore relativo all'elemento selezionato.

Code: Select all


Grazie per l'idea .... un esempietto pratico ?
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Eccolo, prova con e senza la chiamata a PrnSetPage() e vedi la differenza anche in anteprima (la scritta si ingrandisce quando la pagina è A5):

Code: Select all

#include "Fivewin.ch"


#define DMPAPER_A5 11


FUNCTION MAIN()

    LOCAL oPrn, oFnt

    PRNSETPAGE( DMPAPER_A5 )

    PRINT oPrn PREVIEW
        DEFINE FONT oFnt NAME "Arial" SIZE 0, -12 OF oPrn
        PAGE
            oPrn:Say( 100, 100, "This is a test", oFnt )
        ENDPAGE
    ENDPRINT

    RELEASE FONT oFnt

    RETURN NIL
EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

scusa io intendevo un esempio per il doppio array non per l'anteprima di stampa che lo so come si fa...
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Qualcosa del genere?

Code: Select all

#include "Fivewin.ch"


#define DMPAPER_A5 11


FUNCTION MAIN()

    LOCAL oDlg, oLbx

    LOCAL aFormati := { { "Formato 1", "Formato 2", "DMPAPER_A5" },;
                        { 1, 2, DMPAPER_A5 } }

    LOCAL cFormato := ""

    DEFINE DIALOG oDlg

    @ 1, 1 LISTBOX oLbx VAR cFormato ITEMS aFormati[ 1 ]

    @ 3, 1 BUTTON "&Stampa" ACTION STAMPA( aFormati[ 2, oLbx:GetPos() ] )

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL


STATIC FUNCTION STAMPA( nFormato )

    LOCAL oPrn, oFnt

    PRNSETPAGE( nFormato )

    PRINT oPrn PREVIEW
        DEFINE FONT oFnt NAME "Arial" SIZE 0, -12 OF oPrn

        PAGE
            oPrn:Say( 100, 100, "This is a test", oFnt )
        ENDPAGE
    ENDPRINT

    RELEASE FONT oFnt

    RETURN NIL
EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

ok stasera provo
Best Regards, Saludos

Falconi Silvio
User avatar
Maverich
Posts: 31
Joined: Sun Oct 09, 2005 8:29 pm
Location: Prato, Italia

Re: Parametri di stampa

Post by Maverich »

Ciao,
ho reinstallato windows XP 32 bit e riportato una vecchia applicazione fivewin, che prima funzionava bene.
Ora lanciandola mi dà "There is no printer installed...", malgrado abbia una stampante fisica ed una virtuale (pdf), che funzionano correttamente con widnows.
è un problema noto? come si risolve?
Grazie,
Riccardo
Riccardo
Post Reply