PDA

Visualizza la versione completa : [VB6] datareport con modulistica


frecce
02-07-2002, 16:03
E' possibile utilizzando un report costruito con il DataReport posizionare dei campi in una posizione precisa della pagina?
Mi occorre per poter stampare su modulistica.

Questo e' il mio caso:
Devo stampare una fattura, composta da intestazione, righe dettaglio e pie' di pagina.
Sono riuscito a posizionare correttamente i campi nell'intestazione e nel dettaglio, ma non nel pie' di pagina.

Il pie' di pagina deve essere stampato in una posizione a 5 cm. dal margine inferiore, invece il dataReport me lo stampa sempre subito dopo le righe dettaglio.

vonkranz
02-07-2002, 16:07
Non e' per fare il menagramo ma sono dell'idea che ti passa veramente poco :eek:

Fossi in te studierei qualche cosa di alternativo tipo l'utilizzo dell'oggetto printer da un prg in VB.

frecce
02-07-2002, 17:08
L'oggetto dataReport e' adeguato per fare etichette su due colonne?

Se utilizzo dei report Access, la dll che devo distribuire e' fornita da Visual Basic oppure e' compresa nel pacchetto di Office?

vonkranz
02-07-2002, 18:52
Originariamente inviato da frecce
L'oggetto dataReport e' adeguato per fare etichette su due colonne?

A mio parere ti conviene utilizzare l'oggetto Printer (ovviamente sotto VB): giocando sulle prop. CurrentX e CurrentY ti posizioni esattamente dove vuoi stampare.
Tieni conto che hai anche la possibilita' di modificare altre proprieta' (FontBold,FontSize ecc.) per personalizzare la tua stampa.
Se poi imposti la prop. ScaleMode su vbMillimiter, puoi tranquillamente misurare con un righello a quale distanza dal lato SX e dal lato superiore devi stampare, imposti CurrentX e CurrentY sulla distanza in mm. e riesci a centrare la posizione senza fare molti tentativi.



Originariamente inviato da frecce
Se utilizzo dei report Access, la dll che devo distribuire e' fornita da Visual Basic oppure e' compresa nel pacchetto di Office?

Non ho capito a cosa ti riferisci e poi come ti ho gia' detto penso che con i report la cosa diventi abbastanza difficile da gestire.
Ciao.

frecce
04-07-2002, 01:54
Grazie per i consigli.
Ho provato ad usare l'oggetto printer.
Riesco a stampare linee e testo ma non riesco a stampare immagini:
nel mio caso devo stampare una immagine per una carta intestata.
Ho provato con Printer.PainPicture, ma mi da' errore.

Come si possono stampare immagini?

Inoltre, è possibile ottenere un'anteprima di stampa con l'oggetto printer?

vonkranz
04-07-2002, 08:58
Ti carichi un'immagine in un oggetto Picture (non e' necessario che sia visibile sul form) e poi usi il metodo PaintPicture.

Supponi che il controllo Picture che hai inserito sul form tu l'abbia chiamato MiaImg; a questo punto basta fare



Printer.PaintPicture MiaImg.Picture, 1, 1


Per stampare l'immagine nell'angolo superiore sinistro del foglio.

Ti riporto per completezza l'help in linea relativo al metoto paintpicture



Metodo PaintPicture


Disegna il contenuto di un file grafico (.bmp, .wmf, .emf, .cur, .ico o .dib) su un oggetto Form, PictureBox o Printer. Non supportaargomenti predefiniti.

Sintassi

oggetto.PaintPicture immagine, x1, y1, larghezza1, altezza1, x2, y2, larghezza2, altezza2, codiceop

La sintassi della funzione PaintPicture è composta dalle seguenti parti:

Parte Descrizione
oggetto Facoltativa.Espressione oggetto che definisce un oggetto dell'elenco "Si applica a". Se oggetto viene omesso, verrà utilizzato il form che ha lostato attivo.

immagine Obbligatoria. Origine dei dati grafici da disegnare in oggetto. Deve essere la proprietà Picture di un oggetto Form o PictureBox.

x1, y1 Obbligatoria. Valori a precisione singola che indicano le coordinate di destinazione (asse x e asse y) in oggetto, in corrispondenza delle quali verrà disegnata immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata.

larghezza1 Facoltativa. Valore a precisione singola che indica la larghezza di destinazione di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se la larghezza di destinazione è superiore o inferiore alla larghezza di origine
(larghezza2), immagine verrà ingrandita o ridotta corrispondentemente. Se l'argomento viene omesso, verrà utilizzata la larghezza di origine.

altezza1 Facoltativa. Valore a precisione singola che indica l'altezza di destinazione di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'altezza di destinazione è superiore o inferiore all'altezza di origine
(altezza2), immagine verrà ingrandita o ridotta corrispondentemente. Se l'argomento viene omesso, verrà utilizzata l'altezza di origine.

x2, y2 Facoltativa. Valori a precisione singola che indicano le coordinate (asse x e asse y) di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se viene omesso, l'argomento verrà impostato su 0.

larghezza2 Facoltativa. Valore a precisione singola che indica la larghezza di origine di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'argomento viene omesso, verrà utilizzata l'intera larghezza di origine.

altezza2 Facoltativa. Valore a precisione singola che indica l'altezza di origine di un'area di ritaglio all'interno di immagine. La proprietà ScaleMode di oggetto determina l'unità di misura utilizzata. Se l'argomento viene omesso, verrà utilizzata l'intera altezza di origine.
codiceop Facoltativa. Valore lungo o codice utilizzato soltanto conbitmap. Definisce un'operazione bit per bit, ad esempio vbMergeCopy o vbSrcAnd, eseguita mentre immagine viene disegnata su oggetto. Per un elenco completo delle costanti, vedere l'argomento Costanti RasterOp nella Guida in linea di Visual Basic.
L'utilizzo di codiceop prevede alcune limitazioni. Se, ad esempio, l'origine è un'icona o un metafile, è possibile utilizzare come

codiceop solo vbSrcCopy e, inoltre, un codiceop che interagisce con il motivo (o "brush" nella terminologia utilizzata nell'SDK), ad esempio MERGECOPY, PATCOPY, PATPAINT e PATINVERT, interagisce in effetti con la proprietà FillStyle della destinazione.

Nota Codiceop viene utilizzato per passare un'operazione bit per bit a una bitmap. Se si specifica un valore per questo argomento quando si passano altri tipi di immagine, per impostazione predefinita verrà generato l'errore "Chiamata di routine o argomento non valido". Per evitare questo errore, non specificare alcun valore per l'argomento codiceop quando non si utilizzano immagini bitmap.



Osservazioni

Per capovolgere una bitmap in senso orizzontale o verticale, specificare valori negativi per l'altezza di destinazione (altezza1) e/o la larghezza di destinazione (larghezza1).

È possibile omettere il numero desiderato diargomenti facoltativi finali. Se si omettono uno o più di tali argomenti, non utilizzare virgole dopo l'ultimo argomento specificato. Per specificare un argomento facoltativo, sarà necessario specificare tutti gli argomenti facoltativi che lo precedono nella sintassi.



Ciao.

Loading