Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

[70-526, #8] Ancora sulla stampa: anteprima e note veloci sulla sicurezza

Già ai tempi dell'esame 70-316, avevamo visto gli strumenti che il FW2.0 ci mette a disposizione per produrre anteprime di stampa dei nostri documenti PrintDocument. Attraverso la classe PrintPreviewDialog, abbiamo a disposizione una Windows Form che mostra l'anteprima di stampa del nostro documento. Questa Windows Form non è modificabile: così è, e così ce la teniamo. Come tutte le WF, per visualizzarle non dobbiamo fare altro che chiamare il metodo ShowDialog, solo dopo aver impostato la proprietà Document sull'istanza di PrintDocument di cui vogliamo generare l'anteprima. La chiamata a ShowDialog scatena la stampa del documento, che però non viene indirizzata sulla stampante di default, bensì sulla finestra di dialogo, scatenando l'esecuzione dell'evento PrintPage per ogni pagina come abbiamo già visto precedentemente.

La WF visualizzata dal PrintPreviewDialog possiede alcune caratteristiche particolari. Vediamole perchè ci torneranno utili più avanti:

  1. La superficie della form è occupata per la maggior parte da un rettangolo bianco che mostra l'anteprima
  2. In alto a sinistra c'è una piccola toolbar, che ci consente di stampare il documento, di impostare lo zoom, di decidere quante pagine vogliamo vedere alla volta (1, 2, 3, 4 e 6) e di chiudere la finestra
  3. In alto a destra c'è un controllo NumericUpDown che ci permette di scorrere le pagine che compongono il documento

Il controllo PrintPreviewControl
Con il FW2.0 c'è una possibilità in più. Grazie all'implementazione della classe PrintPreviewControl, infatti, possiamo creare una finestra di anteprima custom, personalizzandola e aggiungendo features come desideriamo noi. Il "rettangolo bianco" di cui ho parlato al punto (1) non è nient'altro che un controllo PrintPreviewControl, che renderizza un PrintDocument. Come tutti i controlli, anche questo deve essere posizionato su una Windows Form normalissima, che quindi possiamo disegnare come vogliamo noi.

PrintPreviewControl espone alcune proprietà che ci permettono di emulare il comportamento della WF standard mostrata da PrintPreviewDialog. Le proprietà sono:

  1. la proprietà Document è la più importante: stabilisce quale PrintDocument mostrare nell'anteprima
  2. Columns e Rows permettono di stabilire quante pagine vedere nell'anteprima (rispettivamente in senso orizzontale e verticale)
  3. Zoom permette di stabilire lo zoom iniziale dell'anteprima
  4. StartPage permette di stabilire la pagina del PrintDocument da visualizzare
  5. la proprietà UseAntiAlias, come dice il nome stesso, renderizza i font con un effetto di anti-aliasing per migliorarne la leggibilità

Agendo su queste proprietà, quindi, possiamo riprodurre tutte le funzionalità della dialog esposta da PrintPreviewDialog. Ma possiamo andare un po' più in là, aggiungendo features (controlli, per esempio) alla WF capaci di agire sul PrintDocument e di modificarne la stampa.

La sicurezza - PrintingPermission
Il FW2.0 ci permette di regolare l'accesso alle stampanti da parte del nostro managed code, coinvolgendo la classe PrintingPermission, che eredita direttamente da CodeAccessPermission. Tale classe espone la proprietà Level, che assume i valori determinati dall'enum PrintingPermissionLevel (AllPrinting, DefaultPrinting, NoPrinting e SafePrinting). La classe PrintingPermission dispone oltre agli altri dei metodi Assert e Demand. Vi consiglio una lettura agli articoli su MSDN intitolati Security Permissions e Requesting Permissions.

Print | posted on lunedì 5 febbraio 2007 16:44 | Filed Under [ Esame 70-526 ]

Feedback

Gravatar

# re: [70-526, #8] Ancora sulla stampa: anteprima e note veloci sulla sicurezza

Ciao Igor,
grazie anche al tuo blog ho passato oggi il
70-526 con score di 1000
Grazie ancora
15/02/2007 18:46 | Max Revelli
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET