Parametri di stampa

Moderator: Enrico Maria Giordano

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

Parametri di stampa

Post 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
Best Regards, Saludos

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

Re: Parametri di stampa

Post 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
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post 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...
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 »

Le funzioni PrnGetSize() e PrnOffset() funzionano anche prima che venga definita una stampante.

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

Post by Silvio »

ok provo
Best Regards, Saludos

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

Post by Silvio »

PrnGetSize()

ho visto che bisogna definire hdc quindi non va bene
io non ho definito nessuna stampa
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 »

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
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post 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
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 »

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
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post 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
Best Regards, Saludos

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

Post 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 ?
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: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
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: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
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post 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...
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 »

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
Post Reply