Pagina 1 di 1

[VB] PictureBox

MessaggioInviato: dom mag 02, 2004 11:55 am
da Ices_Eyes
Allora...Eccomi qua di nuovo...Il mio problema è questo sta volta...Tempo fa avevo fatto un programma in Visual, e quando mi era servito di stampare avevo creto un picture box di dimensioni foglio A4 in cui avevo scritto quello che mi serviva, quindi avevo stampato il contenuto...Ora, io sono convinto di aver usato picturebox.Print("CIAO") per scrivere nel controllo, ma ora ho un problema. Ho provato ad usarlo di nuovo, ma il icture mi rimane bianco...Dove sbaglio? Cos'è che non mi ricordo?
Oppure...Avete qualche metodo alternativo per stampare???

Ciao [^]

MessaggioInviato: dom mag 02, 2004 2:17 pm
da M@ttia
Scusami, ma non ho capito esattamente cosa dovresti fare con il print("ciao")...

MessaggioInviato: dom mag 02, 2004 2:19 pm
da M@ttia
Ah ok, vuoi scrivere un testo all'interno della picture box, beh diciamo che ci sei andato vicino con la memoria, solo che non è

Codice: Seleziona tutto
Picture1.Print("Ciao")
ma

<b>
Codice: Seleziona tutto
Picture1.Print "Ciao"
</b>

MessaggioInviato: dom mag 02, 2004 2:22 pm
da Ices_Eyes
Allora...Vediamo se riesco a spiegarmi meglio...
Io ho una lista di Nome, cognome indirizzo,..., e dovrei stamparla quando si preme sul bottone stampa...Se mi ricordo giusto una volta avevo usato una PictureBox, nella quale attraverso il Print(sringa) scrivevo dove mi serviva (CurrentX, CurrentY), quello che doveva essere stampato, e alla fie stampavo l'immagine della Picture...Ora però il print non funziona più, e non scrive più nulla, ossia la Picture della PictureBox resa bianca...Non so se mi sono spiegato decentemente...Ciao [^]

MessaggioInviato: dom mag 02, 2004 2:26 pm
da Ices_Eyes
Non funziona nemmeno senza le parentesi... [?]

MessaggioInviato: dom mag 02, 2004 2:27 pm
da Ices_Eyes
Il codice, anche se fa un po' schifo, è questo:
Private Sub cmdPrintList_Click()

Dim intXPosition(7) As Integer
Dim intI As Integer

intXPosition(1) = 12
intXPosition(2) = 70
intXPosition(3) = 90
intXPosition(4) = 105
intXPosition(5) = 120
intXPosition(6) = 140

With picPrint
.Width = .ScaleX(210, vbMillimeters, vbTwips)
.Height = .ScaleY(297, vbMillimeters, vbTwips)

.Font.Name = "Times New Roman"

.CurrentX = .ScaleX(12, vbMillimeters, vbTwips)
.CurrentY = .ScaleY(12, vbMillimeters, vbTwips)
'Titolo
.FontBold = True
.FontSize = 14
picPrint.Print "Lista invii listini e cataloghi"
'Intestazioni
.FontSize = 12
.CurrentX = .ScaleX(12, vbMillimeters, vbTwips)
.CurrentY = .CurrentY + TextHeight("A") + 5
picPrint.Print "Cognome e nome"
.CurrentX = .CurrentX + 20
picPrint.Print "Indirizzo"
.CurrentX = .CurrentX + 20
picPrint.Print "Città"
.CurrentX = .CurrentX + 20
picPrint.Print "Provincia"
.CurrentX = .CurrentX + 20
picPrint.Print "CAP"
.CurrentX = .CurrentX + 20
picPrint.Print "Listino"
.CurrentX = .CurrentX + 20
picPrint.Print "Catalogo"

.FontBold = False

For intI = 1 To lswClient.ListItems.Count
.CurrentY = .CurrentY + TextHeight("A") + 5
'Cognme e nome
.CurrentX = intXPosition(1)
picPrint.Print lswClient.ListItems(intI).ListSubItems(1).Text & _
" " & lswClient.ListItems(intI).ListSubItems(2).Text
'Indirizzo
.CurrentX = intXPosition(2)
picPrint.Print lswClient.ListItems(intI).ListSubItems(6).Text
'Città
.CurrentX = intXPosition(3)
picPrint.Print lswClient.ListItems(intI).ListSubItems(7).Text
'Provincia
.CurrentX = intXPosition(4)
picPrint.Print lswClient.ListItems(intI).ListSubItems(8).Text
'CAP
.CurrentX = intXPosition(4)
picPrint.Print lswClient.ListItems(intI).ListSubItems(9).Text
'Listino
.CurrentX = intXPosition(5)
picPrint.Print lswClient.ListItems(intI).ListSubItems(3).Text
'Catalogo
.CurrentX = intXPosition(6)
picPrint.Print lswClient.ListItems(intI).ListSubItems(4).Text
Next
End With

Call SavePicture(picPrint.Image, "G:Prova.bmp")
DoEvents

End Sub

MessaggioInviato: dom mag 02, 2004 11:20 pm
da M@ttia
Guarda, se il tuo problema è solo di "stampare" una stringa di testo in una picturebox (ad esempio) nella posizione x,y che specifichi tu, te la risolvo con le APi così è tutto + semplice: allora,

<b>
Codice: Seleziona tutto
Private Sub Command1_Click()
 Testo = "Ciao"
 TextOut Picture1.hdc, 100, 100, Testo, Len(Testo)
End Sub
</b>
Dunque, 100 e 100 sono la x e la y all'interno della picturebox dove stampare, quindi sceglile tu... Qui hai usato una funzione che ancora non esiste, quindi in un <u>modulo</u> (non nel form) la dichiariamo subito, più esattamente così:

<b>
Codice: Seleziona tutto
Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
</b>
L'ho appena provato e funziona perfettamente, se hai problemi dimmelo perché ora il codice è ok [^]

MessaggioInviato: lun mag 03, 2004 5:01 pm
da Ices_Eyes
Ok, grazie, fatto. Ora funziona. Il codice sopra non va col currentx, current...Mah...Misteri del vb...E poi è microsoft.... [mandibol]

MessaggioInviato: lun mag 03, 2004 6:52 pm
da M@ttia
Felice che funzioni [^]

MessaggioInviato: lun mag 03, 2004 9:48 pm
da Ices_Eyes
Mat, per caso sai anche come far visualizzare i controlli standard(command, option, frame,ecc) in stile XP? Io ho trovato che bisogna mettere un file manifest e inizializzare i controlli,e tutto va ok, tranne che per i controlli dentro i frame, che o si vedono male o sfarfallano...Sai come fare?

Ciao

PS se sì si può aprire un altro thread...

PPS l'ho trovato qui, ma la soluzione della picture box non funziona...

MessaggioInviato: lun mag 03, 2004 10:26 pm
da M@ttia
Si, devi mettere u nfile manifest (praticamente una dll) sempre nella stessa directory dove si troverà l'exe, con lo stesso nome (poi ti spiego), se mi dai la tua mail te lo mando... Da me`funziona alla grande! (piccola chicca, se lo metti nella cartella dove c'è l'eseguibile di visual basic (VB6.exe), ti visualizza TUTTO VB (anche i form) giâ in stile VB!!! [^]

MessaggioInviato: mar mag 04, 2004 2:16 pm
da Ices_Eyes
Si, infatti, ho fatto tutto di quella cosa...L'unica era quello sfarfallio dei controlli dentro un frame, e mi chiedevo se eri riuscito a risolverlo...

Ciao [^]

MessaggioInviato: mar mag 04, 2004 4:13 pm
da M@ttia
Eh quello no, mi sa sempre un bordino nero e una grafica non spettacolare nei contorni...

MessaggioInviato: mar mag 04, 2004 4:16 pm
da Ices_Eyes
Risolto...Ho scritto all'autore dell'articolo, che mi ha illuminato.... Sull'articolo c'è scritto che bisogna inserire il tutto in una picturebox, ma...Quello che è da fare in realtà è:
-fare il frame
-mettere dentro il frame una picturebox
-mettere dentro la picturebox, dentro il frame, i controlli...
Et voilà, niente sfarfallio e controlli disegnati giusti...Olè!!!

Ciao [^]

MessaggioInviato: mar mag 04, 2004 5:51 pm
da M@ttia
Ingegnoso, in effetti funziona [^]