Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB] PictureBox

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB] PictureBox

Messaggioda Ices_Eyes » dom mag 02, 2004 11:55 am

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 [^]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » dom mag 02, 2004 2:17 pm

Scusami, ma non ho capito esattamente cosa dovresti fare con il print("ciao")...
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda M@ttia » dom mag 02, 2004 2:19 pm

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>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Messaggioda Ices_Eyes » dom mag 02, 2004 2:22 pm

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 [^]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda Ices_Eyes » dom mag 02, 2004 2:26 pm

Non funziona nemmeno senza le parentesi... [?]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda Ices_Eyes » dom mag 02, 2004 2:27 pm

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
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » dom mag 02, 2004 11:20 pm

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 [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » lun mag 03, 2004 5:01 pm

Ok, grazie, fatto. Ora funziona. Il codice sopra non va col currentx, current...Mah...Misteri del vb...E poi è microsoft.... [mandibol]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » lun mag 03, 2004 6:52 pm

Felice che funzioni [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » lun mag 03, 2004 9:48 pm

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...
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » lun mag 03, 2004 10:26 pm

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!!! [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » mar mag 04, 2004 2:16 pm

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 [^]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » mar mag 04, 2004 4:13 pm

Eh quello no, mi sa sempre un bordino nero e una grafica non spettacolare nei contorni...
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Ices_Eyes » mar mag 04, 2004 4:16 pm

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 [^]
Avatar utente
Ices_Eyes
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5543
Iscritto il: ven ott 24, 2003 10:37 am
Località: Prov. di Venezia

Messaggioda M@ttia » mar mag 04, 2004 5:51 pm

Ingegnoso, in effetti funziona [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising