View Full Version : [VB]Stampare il testo al centro della pagina!
Magnum2000
16-04-2002, 18:28
Ragazzi, ho bisogno di un aiutONE! :D
Sapete dirmi dove sbaglio?
Il testo dovrebbe essere stampato al centro, invece è giusto un pò più a destra del margine sinistro.
Mi sembra di aver fatto tutto bene
C'è qualche angioletto che sa dirmi dove ho sbagliato?
------------------------------------------------
Dim stampato, firma As String
stampato = "testo1"
firma = "testo2"
Printer.FontSize = 8
Printer.FontName = "Arial"
Printer.FontBold = True
Printer.Print Spc((80 - Len(stampato)) / 2);
Printer.Print stampato
Printer.Print Spc((80 - Len(firma)) / 2);
Printer.Print firma
Printer.FontBold = False
Printer.EndDoc
------------------------------------------------
Sono 80 i caratteri max per 1 foglio A4?
BO! :confused:
Magnum2000
16-04-2002, 19:26
C'è ancora qualcuno che programma in Visual Basic?
Ogni volta che chiedo qualcosa sulla stampa, tutti scappano!
Bhe?
E daiiiiii.
Non è che ho chiesto cose allucinanti.
un pò dura stampare al centro pagina così. Primo perchè l'arial non è un carattere a spaziatura fissa, pertanto le dimensioni di ogni carattere incidono sulla lunghezza totale della scritta.
Inoltre puoi decidere la dimensione del carattere, per esempio tu hai scelto 8.
ti consiglio intanto di utilizzare un carattere a spaziatura fissa, tipo il "Courier New", fare una stampa con una scritta lunghissima per vedere quanti caratteri ci stanno con le dimensioni che più ti aggradano e poi modificare la tua formula di conseguenza.
Originariamente inviato da Magnum2000
[B]C'è ancora qualcuno che programma in Visual Basic?
Ogni volta che chiedo qualcosa sulla stampa, tutti scappano!
Bhe?
E daiiiiii.
Non è che ho chiesto cose allucinanti.
Hai ragg ma...il VB è proprioun pezzotto di ambiente di programm...molto semplice ed intuitivo ma...cmq pezzotto....chi è che ha buttato un occhio alla piattaforma .net?? vb com'è??hanno aggiustato qualcosina??.....almeno l'ereditarietà la si puo' implementare?.....magari lascio un altro post...nn mi seembra il luogo giusto....
sicuramente la stampa è uno dei maggiori punti deboli di VB.
nn ho mai fatto qualcosa del genere cmq...credo che se in questo modo nn trovi la giusta sol......puoi provare con le api
Le API sono di windows e non per VB6 o altri linguaggi, gli strumenti di
sviluppano le usano e quello che può cambiare è il modo di dichiararle. Per
il VB6 c'è tra i tool l' API text viewer che dice come dichiarare le
funzioni disponibili. Quelle utili al settaggio della stampante sono le
seguenti :
Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal
hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long,
pcbNeeded As Long) As Long
Declare Function DocumentProperties Lib "winspool.drv" Alias
"DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal
pDeviceName As String, pDevModeOutput As DEVMODE, pDevModeInput As DEVMODE,
ByVal fMode As Long) As Long
Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" (ByVal
hPrinter As Long, ByVal Level As Long, pPrinter As Byte, ByVal Command As
Long) As Long
e vanno usate in sequenza così come le ho scritte; le proprietà desiderate
vanno settate nella struttura DEVMODE così composta :
Public Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Per il settaggio delle singole propietà devi vedere l'help o cercare su
MSDN. Sappi comunque che con VB ci possono essere dei problemi in quanto la
struttura di DEVMODE può variare per alcuni driver di stampanti e questo non
è gestibile con VB ecco perchè alla fine bisogna farlo in C o..cmq qualcosa di+serio del vb.
Ci@oO!
Magnum2000
17-04-2002, 22:36
Originariamente inviato da cavay
[B]...può variare per alcuni driver di stampanti e questo non
è gestibile con VB ecco perchè alla fine bisogna farlo in C o..cmq qualcosa di+serio del vb.
Ci@oO!
:confused: :eek: :confused:
Non mi spaventare con queste cose! ;)
Sapete che ho fatto?
Ho fatto 10.000 prove di stampa "rozza" ed alla fine l'ho centrato.
Però ho notato una cosa molto strana :rolleyes:
Se prelevo del testo da una TextBox multiriga e la stampo, come faccio a stampare il testo a capo automaticamente quando ragginge il limite del foglio?
Cioè se una variabile testo supera l'area di stampa, come faccio a far andare il testo automaticamente a capo?
E, E, E. Adesso vi ho messo proprio in difficolta :D
basta sapere se il numero di caratteri della stringa è superiore al numero di caratteri stampabili per ogni riga, ed il gioco è fatto. ;)
ho trovato un controllo ocx per gestire la stampa in vb...
aspe che mo ti do' il link...provalo e fammi sapere
qui (http://www.vbitalia.it/redirect.asp?codc=CODICE-Visual Basic 6-Progetto semplice-579&ricerca=nessuna)
cmq se nn è corretto vai su vbitalia e...cerca unpo' sulla home
Magnum2000
17-04-2002, 22:52
Originariamente inviato da lufo
[B]basta sapere se il numero di caratteri della stringa è superiore al numero di caratteri stampabili per ogni riga, ed il gioco è fatto. ;)
E come faccio a troncare il testo proprio nel punto in cui devo troncare? :rolleyes:
Se ad esempio ho una variabile txtTesto = "CIAO"
e la O deve andare a capo, come faccio?
Originariamente inviato da Magnum2000
[B]
E come faccio a troncare il testo proprio nel punto in cui devo troncare? :rolleyes:
Se ad esempio ho una variabile txtTesto = "CIAO"
e la O deve andare a capo, come faccio?
Tramite le funzioni Left, Right e Mid ;)
Magnum2000
17-04-2002, 22:58
Originariamente inviato da cavay
[B]ho trovato un controllo ocx per gestire la stampa in vb...
aspe che mo ti do' il link...provalo e fammi sapere
qui (http://www.vbitalia.it/redirect.asp?codc=CODICE-Visual Basic 6-Progetto semplice-579&ricerca=nessuna)
cmq se nn è corretto vai su vbitalia e...cerca unpo' sulla home
Cos'è un OCX?
Magnum2000
17-04-2002, 23:00
Originariamente inviato da lufo
[B]
Tramite le funzioni Left, Right e Mid ;)
Gentilmente, potresti farmi un esempio? (è da poco che uso il VB)
nn l'hai trovato l'ocx??
eccolo..
Originariamente inviato da Magnum2000
[B]
Gentilmente, potresti farmi un esempio? (è da poco che uso il VB)
un esempio potrebbe essere questo:
if len(TuaStringa) > MaxCaratteri then
Stringa1 = Left(TuaStringa, MaxCaratteri)
Stringa2 = Right(Tastringa, Len(TuaStinga) - MaxCaratteri)
end if
se cerchi sull'msdn della microsoft, torvi tutta la spiegazione della sintassi di Left, Mid e Right ed il loro funzionamento. ;)
Magnum2000
19-04-2002, 12:22
Originariamente inviato da lufo
[B]
un esempio potrebbe essere questo:
if len(TuaStringa) > MaxCaratteri then
Stringa1 = Left(TuaStringa, MaxCaratteri)
Stringa2 = Right(Tastringa, Len(TuaStinga) - MaxCaratteri)
end if
se cerchi sull'msdn della microsoft, torvi tutta la spiegazione della sintassi di Left, Mid e Right ed il loro funzionamento. ;)
Grazie 1000! ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.