Newsgroup: it.comp.lang.visual-basic
Titolo: CommonDialog showPrinters


Oggetto: CommonDialog
Data: venerdě 20 settembre 2002 14.26
Salve a tutti.
Ho inserito su un form l'activeX CommonDialog per far scegliere all'utente,
il tipo di stampante e il numero di copie di un report.
Adesso mi č sorto un problema.
Quando seleziono la stampante o il nr. di copie, queste impostazioni
diventano le predefinite del sistema.
Esiste un metodo per far tornare tutto come era prima del settaggio?
Grazie in anticipo per la risposta
Ringhitt

 Esiste un metodo per far tornare tutto come era prima del settaggio?
Vedi PrinterDefault

 ha scritto nel messaggio
news:SXJi9.21788$Av4.4...@twister2.libero.it...

Sei io però spunto la casella printer default, il controllo non mi fà
cambiare la stampante per stampare

 cambiare la stampante per stampare
La casella? Non ci sono su!
Io mi riferivo alla proprietà PrinterDefault del CommonDialog.
Vedi un po' qui:
http://makeashorterlink.com/?N2E113CD1

 ha scritto nel messaggio
news:amfr9v$9fa$1...@lacerta.tiscalinet.it...


 come risolvo il problema
Francamente sono perplesso.
Cominciamo con: Quale sistema operativo, esattamente?
Inoltre, pubblica qui tutto il codice che riguarda i preliminari per il
CommonDialog, sino a ShowPrinter compreso.
Ho fatto un po' di ricerce nel mio codice e note, non so essere più preciso
(link o cose del genere):
ESF0MESS.cdl_dialogo.PrinterDefault = 1 'In ambiente 9x la stampante diventa
sempre di sistema, comunque settato
' 'In ambiente NT (anche se simulato con EASY_INFO(138), non diventa mai di
sistema)
' 'Risolto 010202 - Questa istruzione e' necessaria per Win9x/Me
Printer.TrackDefault = 1 'E' predefinito 'Del tutto ininfluente, comunque
settato
'Riabilitato 010202 per forzatura settaggi in Win9x/Me
07-06-2000 Mettere opzione (e vedere se è possibile) per non rendere la
stampante scelta da procedura come stampante predefinita. Non è possibile!
(Cercare PrinterDefault)

che sia questo il riferimento che mi mancava?:
http://makeashorterlink.com/?J2F612DD1
Nota quando dice:
Remarks
When PrinterDefault is True, you can write code to print directly to the
Visual Basic Printer object. Otherwise, you must use the graphic device
interface (GDI) calls to print to the printer specified by the control's hDC
property.
PS: Aneddoto: Ho alcuni clienti che, poco pratici di varie procedure non
mie, per settare la stampante su cui stampare con le stesse, entrano nel mio
gestionale, settano con gli strumenti che mette a disposizione la stampante
predfinita (io ho sempre PrinterDefault=True, anzi=1) e, pur senza stampare,
escono. Vanno poi in un altro applicativo non mio e stampano felici e
contenti.

Altre mie note (da prendersi, visto il tempo trascorso, con beneficio di
inventario):
151199
E’ stato definitivamente risolto il problema per cui alcune indicazioni sul
pannello di controllo della stampante richiesta venivano ignorate in
ambiente Windows NT (Server e WorkStation), come, ad esempio, l’orientamento
del foglio. Sono state anche tolte le opzioni Verticale/Orizzontale dalla
finestra di richiesta della stampante. Il problema, noto in Microsoft e
descritto nel documento "PRB: Working with Print Dialog and Printer Object
under NT 4.0" (Da library ottobre 1999 di MSDN) non è risolto al 17 giugno
1999. Per superare il problema sono state inserite le istruzioni contenute
nel documento citato
E’ importante indicare il sistema operativo della postazione (se diverso da
Windows 95/98) accedendo alle funzioni dalla finestra iniziale delle
condizioni d’uso
121199
Vedi anche nota del 191099: Dalla finestra per la richiesta delle stampante,
per sistema operativo di postazione Windows 95/98, sono state tolte le
opzioni per l’indicazione dell’orientamento (verticale/orizzontale) del
foglio perché attivandole, in ambiente Win95/98, non era più possibile
cambiare la stampante.
Allo stato attuale tali indicazioni, presenti in Windows NT, creano lo
stesso problema, ma, come già segnalato, in ambiente WinNT le impostazioni
con la normale finestra delle proprietà non vengono riprese
101199
La finestra per la richiesta della stampante e del font ora prevede anche l’
indicazione dell’orientamento del foglio. Questa modifica si è resa
necessaria perché in ambiente Windows NT (Server o Workstation) tale
informazione non viene restituita (così come altre quali la dimensione del
foglio, il numero delle copie, il cassetto di alimentazione, etc.) al
programma dalla finestra delle proprietà della stampante. Non è un problema
di driver della stampante, l’anomalia è "limitata" alla finestra di dialogo
in ambiente Windows NT (Server o Workstation). In tali ambienti è quindi
necessario effettuare la scelta dell’orientamento dalla finestra di
procedura in quanto quella della finestra delle proprietà della stampante,
pur possibile, viene ignorata

  i campi Formato, alimentazione della carta ed orientamento?
Non saprei dirti. Credo che l'unica possibilità sia quella di approfondire
la funzionalità e le varie opzioni della  proprietà Flags del CommonDialog
In subordine (perchè la domanda che mi faccio è: Perchè usare il dialogo
Stampa per poi togliere tutte le possibilità?) perchè non usare un semplice
ListBox per elencare le stampanti disponibili (Vedi Insieme Printers)?

 ha scritto nel messaggio
news:8A2j9.70233$Hc7.5...@twister1.libero.it...

Infatti ho provato ad utilizzare questa opzione, però mi sono imbattuto su
un problema
2 volte su tre quando provavo a ristampare il report e sceglievo un
stampante diversa dalla predefinita, l'output di stampa rimaneva sempre
quella predefinita.(il problema si manifestava su access Xp e non su Access
97)  (nb la selezione delle stampanti di VBA è diversa da VB)
Con Access mi ci trovo molto bene, ma per quanto riguarda la selezione delle
stampanti è un casino.
Il problema sarebbe anche stato risolto, in quanto la microsoft per Access
XP ha prodotto un funzioncina che farebbe al caso mio (si trova su Msdn)
Il problema però è che la mia applicazione da distribuire deve girare anche
su Access 97 e questa funzione non è compatibile con quest'ultima versione.
Comunque la giro, la giro male
Ringhitt