Page 1 of 2

Parametri di stampa

Posted: Wed Feb 15, 2006 10:54 am
by Silvio
Se io selezionassi un tipo di pagina per la stampa ad esempio DMPAPER 3 ( A4)
c'è un metodo o una funzione che mi restituisca il tipo di carta selezionata e i parametri della larghezza, lunghezza, margine destri, margine sinistro, superiore, inferiore ?

Grazie

Re: Parametri di stampa

Posted: Wed Feb 15, 2006 1:03 pm
by Enrico Maria Giordano
Silvio wrote:Se io selezionassi un tipo di pagina per la stampa ad esempio DMPAPER 3 ( A4)
c'è un metodo o una funzione che mi restituisca il tipo di carta selezionata e i parametri della larghezza, lunghezza, margine destri, margine sinistro, superiore, inferiore ?

Grazie
Per quanto riguarda le dimensioni del foglio prova il metodo TPrinter:GetPhySize() oppure la funzione PrnGetSize(). Per i margini prova le variabili TPrinter:nXOffset (margine sinistro dell'area stampabile) e TPrinter:nYOffset (margine superiore dell'area stampabile) oppure la funzione PrnOffset().

EMG

Posted: Wed Feb 15, 2006 3:58 pm
by Silvio
si anche un altra volta mi ha detto così ....
Ma si ha il caso che io non sono sulla classe Tprinter e quindi io il foglio di carta non c'è l'ho lo devo creare ...
Spiego meglio
io ho una dialog :
Nuovo formato -> si apre una dialog con un combobox con i tipi di carta
ON CHANGE -> mi deve restituire la larghezza e la lunghezza .... poi su 4 get io posso chiedere all'utente i margini ( destro sinistro,sup,inf)

Spero che abbia capito...

Posted: Wed Feb 15, 2006 4:21 pm
by Enrico Maria Giordano
Le funzioni PrnGetSize() e PrnOffset() funzionano anche prima che venga definita una stampante.

EMG

Posted: Wed Feb 15, 2006 4:38 pm
by Silvio
ok provo

Posted: Wed Feb 15, 2006 4:42 pm
by Silvio
PrnGetSize()

ho visto che bisogna definire hdc quindi non va bene
io non ho definito nessuna stampa

Posted: Wed Feb 15, 2006 4:52 pm
by Enrico Maria Giordano
Ops, è vero. Però, pensandoci bene, non mi pare possibile definire la carta prima di definire una stampante. Il tipo di carta infatti, come confermano le API utilizzate dalle funzioni PrnGetSize() e PrnOffset(), è una caratteristica della specifica stampante utilizzata.

EMG

Posted: Wed Feb 15, 2006 4:53 pm
by Silvio
io devo mettere in u combo tutti i formati che in quel momento la mia stampante supporta
c'è un metodo veloce per esempio

Code: Select all


   LOCAL aLbx :=  dammi i formati()
   LOCAL nLbx := 1
   LOCAL lOk  := .F.
   LOCAL oDlg, oLbx, i

   DEFINE DIALOG oDlg RESOURCE "Formati" FONT ::oFont

   REDEFINE LISTBOX oLbx VAR nLbx ITEMS aLbx ID 101 OF oDlg

   REDEFINE BUTTON ID 201 ACTION ( lOk := .T., oDlg:End() )
   REDEFINE BUTTON ID 202 ACTION ( oDlg:End() )

   ACTIVATE DIALOG oDlg CENTER


  if lOk
      ? aLbx[ nLbx ] 
   endif

RETURN NIL
grazie

Posted: Wed Feb 15, 2006 4:58 pm
by Enrico Maria Giordano
No, perché, appunto, non hai ancora definito qual'è la "tua stampante" e quindi il sistema non può sapere a quale ti riferisci. Comunque anche definendo prima la stampante non ti saprei dire lo stesso come fare a (né se sia possibile) tirare fuori i formati di carta supportati.

EMG

Posted: Wed Feb 15, 2006 4:59 pm
by Silvio
Ops, è vero. Però, pensandoci bene, non mi pare possibile definire la carta prima di definire una stampante. Il tipo di carta infatti, come confermano le API utilizzate dalle funzioni PrnGetSize() e PrnOffset(), è una caratteristica della specifica stampante utilizzata.
HAi ragione ma per esempio ho visto in ER che lui fa definire la pagina senza che nessuna stampante sia stata creata in windows cioè funzia anchese non c'ènessna stampante installata sul pc o on line

Posted: Wed Feb 15, 2006 5:01 pm
by Silvio
No, perché, appunto, non hai ancora definito qual'è la "tua stampante" e quindi il sistema non può sapere a quale ti riferisci. Comunque anche definendo prima la stampante non ti saprei dire lo stesso come fare a (né se sia possibile) tirare fuori i formati di carta supportati.
Bene secondo te dovrei definire hdc diciamo che è oprn quindi oprn:prngetsize()
e per avere i formati in un array ?

Posted: Wed Feb 15, 2006 5:07 pm
by Enrico Maria Giordano
Silvio wrote:HAi ragione ma per esempio ho visto in ER che lui fa definire la pagina senza che nessuna stampante sia stata creata in windows cioè funzia anchese non c'ènessna stampante installata sul pc o on line
Probabilmente riempie un array con *tutti* i principali formati disponibili (che trovi, ad esempio, in printer.prg) indipendentemente dalla stampante. Può essere?

EMG

Posted: Wed Feb 15, 2006 5:09 pm
by Enrico Maria Giordano
Silvio wrote:Bene secondo te dovrei definire hdc diciamo che è oprn quindi oprn:prngetsize() e per avere i formati in un array ?
Purtroppo, come ti ho già detto, non lo so.

EMG

Posted: Wed Feb 15, 2006 5:20 pm
by Silvio
si ho provato a mettere in un array tutti i tipi che ho trovato in print ma poi selezionandoli non saprei come fare a restituirmi i valori senza definire oprn (hdc)
probabilmente sarà possibile farlo in c...

Posted: Wed Feb 15, 2006 5:37 pm
by Enrico Maria Giordano
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.

EMG