Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    66

    Alternativa a IF...THEN in vb6

    In un mio programma ormai quasi terminato , in fare di run, viene assegnato ad una variabile chiamata SOMMA un valore compreso tra 1 e 98.A seconda del valore della variabile, viene poi caricata dal disco una immagine corrispondente a quel numero. SE per es. il valore di SOMMA é 3 allora viene caricata l'immagine 3
    Io per fare questo ho scelto di usare IF...THEN

    es.

    if val(somma)=3 then
    Image1 = LoadPicture("C:\Immagine3.jpg")
    end if

    ma poiché le immagini nella cartella sono 98, dovrei ripetere per 98 volte la routine di caricamento IF...THEN.
    Esiste un altro metodo,magari con FOR...NEXT , mediante il quale la routine viene automatizzata nella scelta dell'immagine in base al valore di SOMMA senza ripetere 98 volte la condizione?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    Potresti usare un controllo ImageList ed inserire le relative immagini all'interno in fase di programmazione.
    A questo punto fai :

    for i=1 to 98
    if i=somma then
    Picture1.Picture = ImageList1.ListImages(somma).Picture
    end if
    next i.

    E' un'idea che mi e' venuta cosi' senza provarla.
    Fammi sapere

  3. #3
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    66
    ancora non ho provato la tua routine, ma solo un chiarimento:
    cosa intenti all'interno in fase di programmazione?
    l'immagine deve essere caricata come immagine. come faccio a 'conservare'all'interno del programma dei file grafici?
    scusa se non ho capito.
    inoltre per motivi di autosize devo usare
    Image en non picturebox.
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    scusa la mia imprecisione:
    intendevo in fase di struttura form ,quando la stai disegnando per intenderci,popoli il controllo imagelist con tutte le immagini che desideri prendendole dalla directory che hai.
    Puoi usare il controllo image,non e' un probrema.Cambia solo la sintassi tra picture e image.
    Potresti anche passare attraverso un file mdb,dove inserisci nel campo il percorso dell'imagine "c:\Pippo\pippo.jpg" e di volta in volta lo apri,sempre con il ciclo di for ,recuperi il contenuto del campo dove hai inserito il percorso e loo trasferisci al controllo picture o image.

  5. #5
    Usare il select case?

    Select case val(somma)
    case 1
    .....
    case 2
    ....
    ....
    ....
    ....
    case 98
    ....
    end select

    certo dovrai scrivere il codice dentro ad ogni case...ma in fase di esecuzione risparmi in cicli di esecuzione. Sicuramente è più veloce

  6. #6
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    66
    Si,
    anche con SELECT CASE dovrei ripetere 98 volte il richiamo dei singoli grafici, ma certo piu veloce di IF... THEN

    Questa opzione sarà da applicare se non trovo di meglio.
    grazie

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, senza usare l'If, potresti fare una cosa del genere:
    codice:
    Image1 = LoadPicture("C:\immagine" & somma & ".jpg")
    Jupy

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    Ripartiamo da capo.
    Nel tuo programma devi inserire una cartella chiamata ad esempio ListaImmaginidove metterai le 98 immagini.Questa cartella poi dovra' essere inserita nell'eseguibile che dovrai dare in giro.Per facilitare il tutto poniamo di metterla sotto C:

    Inserisci nella form un controllo ImageList e inserisci le 98 immagini in ordine cronologico.
    Ad ogni immagine vedrai che sara' associato in automatico un valore index,che arrivera' fino a 98 per 98 immagini.

    A questo punto esegui il loop

    for i=1 to 98
    if i=somma then
    Picture1.Picture = ImageList1.ListImages(somma).Picture
    end if
    next i.

    Se usi il controllo image sara image1.image=ImageList1.ListImages(somma).Picture

    Un'altra alternativa e' compilare un file Access con 2 campi ID e Percorso
    Nel campo percorso metti il percorso dell'immagine:"C:\ListaImmagine\Immagine.jpg"
    Nel ciclo di for farai in modo che se i=somma con una query recuperi la riga della tabella con id =somma e quindi il campo percorso che traferirai alla image1 o picture1.


  9. #9
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    66
    Dopo provo sia il suggerimento di jupy64 sia multijet. e faccio sapere--------------------------------------------------------------------------------

    a multjet chiedo:
    in questa linea
    Image1 = LoadPicture("C:\immagine" & somma & ".jpg")
    prima e dopo somma ci sono spazi o non ha imprtanza?



    grazie comunque

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    conviene creare una bvariabile es

    dim str as string
    str="c:\Immagine" & somma & ".jpg"
    Passa poi la str a lodpicture.

    E' giusto anche come prima ma cosi' forse e' meglio perche' passi alla picture la sintassi completa.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.