Newsgroup: it.comp.lang.visual-basic
Titolo: Mi date una mano?

Salve a tutti, sto studiando il VB5 da circa 24 ore ed avrei qualche 
piccolo quesito (nell'ordine delle decine di migliaia) ;-))
Vabbe' spero di non annoiarvi con le mie domande suppongo banali, 
il problema e' questo:
Come primo programmino ho deciso di realizzare una cartolina di auguri 
natalizi,  che ho realizzato senza eccessivi problemi, in pratica 
il programma consiste in un unica finestra dove ci sono due label con dei 
messaggi di auguri e due pulsanti, uno dei pulsanti e' "Esci" e fin 
qui nessun problema l'altro invece una volta cliccato mostra la foto 
di una bella ragazza :) in un'area definita della finestra.
Il tutto funziona perfettamente ed anche una volta compilato non ci 
sono problemi.
Il problema e' che in questo modo devo distribuire due file e non 
so neanche in che directory andra' a  finire l'immagine e quindi non 
conosco il percorso per poterla evidenziare in un PC diverso da mio.
Mi chiedevo se non fosse possibile unire immagine e programma in un unico eseguibile. 
Credo che si possa fare ma come??? :-)
Attualmente nel programma utilizzo questo codice:
Private Sub CmdFelice_Click()
   ImgFelice.Picture = LoadPicture("/ellapeppa.jpg")
End Sub
E' banale? :-)
Vabbe', il secondo questito riguarda un altro problema:
Sul mio manuale c'e' un esempio che dovrebbe centrare la finestra 
nello schermo ed il codice e' il seguente:
Private Sub Form_Load()
   frmMioPrimo.Left = (Screen.Width  frmMioPrimo.Width) / 2
   frmMioPrimo.Top = (Screen.Width  frmMioPrimo.Height) / 2
End Sub
Pero' se lo scrivo cosi' mi viene un messaggio di errore che scompare 
se aggiungo degli operatori (+, -, <, >) che fanno si che la finestra 
sia posizionata all'avvio in posizioni diverse dello schermo a secondo 
delle combinazioni, in pratica devo avere del codice di questo tipo 
per evitare il mex di errore:
Private Sub Form_Load()
   frmMioPrimo.Left = (Screen.Width - frmMioPrimo.Width) / 2
   frmMioPrimo.Top = (Screen.Width = frmMioPrimo.Height) / 2
End Sub
Naturalmente invece del "- " e del "=" posso mettere due qualsiasi 
degli altri operatori.
Qualcuno mi spiega come funziona la cosa?
Vi ringrazio in anticipo. :-)
Xmeo4 & Zac

nello schermo ed il codice e' il seguente:
per centrare una form , puoi fare così:
vai nel menù visualizza e scegli "Finestra disposizione Form"
da quì puoi cliccare con il tasto destro del mouse su una form e scegliere
nel menù che ti appare il sotto menù  POSIZIONE .dopodichè scegliere CENTRA
FORM.
OK?
pcar...@labnet.it


Se sul tuo manuale c'è scritto così chi l'ha scritto è un incompetente.
Il codice corretto è
Sub CenterForm(F as form)
   F.Left = (Screen.Width - F.Width) / 2
   F.Top = (Screen.Height - F.Height) / 2
End Sub
Private Sub Form_Load()
    CenterForm(Me)
End Sub
Semplicemente perchè il lato destro del form deve essere posizionato metà
form prima della metà dello schermo, e lo stesso per la posizione verticale.
Ciao

Grazie a Zanna e PicRaf per le risposte, provero' a provare, forse ce 
la faccio a farcela. ;-)
Xmeo4 & Zac

Scrive  "PicRaf":
| Private Sub CmdFelice_Click()    ImgFelice.Picture = 
| LoadPicture(image1.picture) 'image1 contiene 'quella immagine 
| ellapeppa.jpg End Sub
Ho fatto cosi' e riesco a caricare l'immagine della picturebox pero' 
quando vado ad eseguire il programma e clicco sul pulsante mi da un 
errore di run-time 424 - Necessario oggetto
Il debug mi porta su:
ImgFelice.Picture = LoadPicture(image1.picture) 'image1 contiene
'quella immagine ellapeppa.jpg
Dove sbaglio? alla picturebox  ho dato nome imgFelice e in "picture"
ho indicato la mia immagine che viene visualizzata regolarmente mentre 
lavoro al progetto, quando poi do l'F5 il programma si avvia e l'immagine
naturalmente scompare fino a quando non clicco sul pulsante, a quel 
punto pero' invece di visualizzarsi mi da l'errore di cui sopra.
Come mai? E poi: image1 che cosa e'? Da dove viene fuori quel nome? 
Io ho solo una imagebox che si chiama imgFelice.
Abbiate pazienza. :-)
Xmeo4 & Zac


Ehm... e' un manuale stampato? E' chiaro che si sono dimenticati di stampare
anche gli operatori matematici :-)
Sono entrambi -   (la logica dell'operazione e' semplice geometria piana).
Tra l'altro ti conviene usare il metodo Move della form (e' piu' veloce che
assegnare separatamente Left e poi Top), prova cosi' (occhio che e' una sola
linea, e' spezzata da mailer):
Private Sub Form_Load()
   frmMioPrimo.Move (Screen.Width - frmMioPrimo.Width) / 2, (Screen.Width -
frmMioPrimo.Height) / 2
End Sub
--
Roal Zanazzi
z...@iol.it

End Sub
Ehm...Screen.Width ritorna un valore numerico (la larghezza dello
schermo),come frmMioPrimo.Width (la larghezza della tua form). Come l'hai
scritta te e' come se scrivessi:
frmMioPrimo.Left = (2254  1258) / 2
Che senso ha? Nessuno, appunto, devi mettere un - in mezzo.
Ti faccio un esempio: supponiamo la tua form sia largha 50 "unita'" e lo
schermo 100. Per centrarla, questa deve stare all'unita' 25, giusto? Quindi
frmMioPrimo.Left=(100-50)/2  ----> = 25 (toh! Che coincidenza :-)))) )
Ciao!

Scrive  "Roal Zanazzi":
| La strada e' ancora luuuuuuunga........ :-)
Me ne sto accorgendo, spero di poterla fare inisieme a voi. :-)
Xmeo4 & Zac


Volentieri, come dicono quelli la': "stay tuned" :-)
--
Roal Zanazzi
z...@iol.it