Newsgroup: it.comp.lang.visual-basic
Titolo: aiuto su richiamo form in modo casuale

possiedo 30 form e su click di un pulsante vorrei caricarne una delle 30 in
modo casuale
ogni form che è già stata aperta non potrà più venire aperta, quindi pensavo
di salvare le
form già aperte in un array e a dogni richiamo controllare se la form è già
stata richiamata
mi sapete aiutare?


Va bene la tua idea.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...


  Penso di si se ho 5 min ti rispondo in privato.
  Sempre che prima qualcuno non posti qualche spunto.
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

   Sempre che prima qualcuno non posti qualche spunto.
Tu hai un'idea dei ng tua.
Rispondi per dire che *se hai tempo* posterai in privato una risposta ad una
domanda rivolta sul ng.
Cosa ce ne frega a noi! Se vuoi scrivergli in privato, fallo e basta. Evita
di mettere in piazza il fatto che *non capisci* come va usato un ng. Le
risposte si danno *nel ng*, non mi pare un concetto difficile.
E se rispondi che palle fai una figura ancora peggiore.
--
Ciao, Silv:o)
...a me l'idea delle sfide è piaciuta: l'aspetto ludico-agonistico dei
problemi mi ha sempre affascinato. Però, come ti hanno fatto notare nel caso
dell'UCase, SOPRATTUTO in queste sfide non si possono scrivere cavolate.

 ha scritto nel messaggio
news:b6h2rd$lee$1...@lacerta.tiscalinet.it...

si l'idea e' buona ,
crea un vettore(X) dove X e' il numero di form
la mischi
click sul pulsante
    carichi la prima del vettore mischiato
    setta un indice su indice+1 (prossima form da aprire)
FINE ^_^

 E se rispondi che palle fai una figura ancora peggiore.
Guerra preventiva?



solo una cosa, visto che avrò un numero random fra 1 e 30
come richiamo la  form?
i=randomize(30)
form & i.show         ?????????
può andare?

 può andare?
Nein

 Nein
E COME?

 Tu hai un'idea dei ng tua.
E de tu nonno in cariola... :-)))
--
Er Roscio.


ho provato cosi
nome = "Livello" & Carica
Forms(nome).Show
ma mi da errore qualcuno sa dove sbaglio?

'Randomize 34  ' Inizializza il generatore di numeri casuali.
Carica = Int((34 * Rnd) + 1)   ' Genera un valore casuale compreso tra 1 e
34.
questo è il codice che uso ma ogni volta che avvio il progetto i numeri
casuali hanno sempre la stessa sequenza, ovvero il primo casuale estratto è
sempre il 10 il secondo è sempre il 7
ma allora che randomize è????? cambia solo la sequenza di caricmanmento ma a
me servirebbero casuali.
Booooo! qualcuno sa illuminarmi?

 'Randomize Timer    ' Inizializza il generatore di numeri casuali.


?????????????????????

 ?????????????????????
!!!

 ?????????????????????
If Len("?????????????????????")=Neurons.Count then
  call msgbox("Tutto chiaro")
End if


comincio a pensare che non esista un modo di richiamare una form in modo
dinamico.
dico bene?
e comincio anche a pensare che randomize o non lo utilizzo bene oppure è
stato progettato con il c..o

 oppure è stato progettato con il c..o
Veramente funziona benissimo.
Però se rispondi con dei punti interrogativi quando ti danno la soluzione,
non hai molto futuro sull'argomento...


    può andare?
cioe' form1 ... form30
in clipper si potevano fare giochini simili, in altri linguaggi non so. in
vb non mi sembra di averne mai incontrati.
percio' dico cambia l'approccio. p.e. appoggia un select case a una matrice
di 30.

 ?????????????????????
Se scrivi Randomize 34, la funzione di randomizzazione
parte sempre dallo stesso numero e genera la stessa sequenza.
Se, invece, parti da un numero casuale (timer ritorna il numero
di secondi trascorsi dalla mezzanotte), avrai sempre sequenze
diverse, a meno che tu non esegua sempre il programma
alle 12.47.23 di ogni giorno !!!... :-)))
--
Er Roscio.

 ma mi da errore qualcuno sa dove sbaglio?
mi sa che devi metterci l'idice della forms , non so , non ho la guida sotto
mano per leggere cosa dice dell'insieme Forms !

ho fatto cosi
Randomize Timer  ' Inizializza il generatore di numeri casuali.
Contalivelli=Contalivelli+1
Carica = Int((34 * Rnd) + 1)   ' Genera un valore casuale compreso tra 1 e
34.
If Contalivelli = 1 Then
    vet(1) = Carica
End If
For i = 1 To Contalivelli - 1
If vet(i) = Carica Then
    Carica = Int((34 * Rnd) + 1)   ' Genera un valore casuale compreso tra 1
e 34.
Else
    vet(Contalivelli) = Carica
End If
Next i
Nome = "Livello" & Carica
Forms(nome).Show                NON  FUNZIONA!!!!
OFFRO PIZZA MARGHERITA A CHI MI SPIEGA COME FARE
P.S. COPERTO E BERE ED EVENTUALI AGGIUNTE ALLA MARGHERITA A CARICO VOSTRO.


hai proprio ragione sta nel fatto che ha messo la soluizione dopo i segni >>
quindi mi pareva il mio testo mi è sfuggito che c'era scritto timer anzichè
34 be succede.
Grazie.

 OFFRO PIZZA MARGHERITA A CHI MI SPIEGA COME FARE
Ti mando l'indirizzo in posta. Aspetto il ragazzo col motorino. Che sia
calda!


la puoi trovare qui! ;)  
http://web.tiscali.it/arold2/pizza.htm
intanto grazie.

 intanto grazie.
Prego.

 Prego.
scherzi a parte se mi dici il conto corrente ti mando un bonifico per la
pizza.

*@Arold [ ]* ha scritto:

Scherzi a parte, t'ho già segato.


cosa vuol dire segato? sono nuovo

 cosa vuol dire segato? sono nuovo
Che mi hai rotto. Ti cancello, ignoro, uccido, banno, plonko. Ti sego,
insomma.

*Lupo* ha scritto:

Scherzo.
No, non scherzavo, è che mi girano maledettamente e me la sono pigliata con
te che non c'entri nulla.
Scusami.
Ma la guida di VB tu l'hai o non l'hai?


lo lo la guida comunque credo che quando i nervi siano a pezzi, meglio
staccarsi dal pc per un po.
la pizza se la vuoi fammi sapere il numero di conto ciao.

 controllare se la form è già stata richiamata
Come ti hanno già suggerito, o utilizzi un array di form oppure un array di
nomi e una select case.
Io farei così:
'----------------- nella form principale (Form1) -------------------
Public myForms
Public ultima As Integer
Private Sub Form_Load()
    myForms = Array(Form2, Form3, Form4)
    ultima = UBound(myForms)
End Sub
Private Sub Command1_Click()
    If ultima = -1 Then
        MsgBox ("Finite!")
    Else
        caso = Int(Rnd * (ultima + 1))
        myForms(caso).Show
        Set myForms(caso) = myForms(ultima)
        ultima = ultima - 1
    End If
End Sub
Se vuoi ripescare le form che chiudi, basta che nell'Unload metti
Private Sub Form_Unload(Cancel As Integer)
    Form1.ultima = Form1.ultima + 1
    Set Form1.myForms(Form1.ultima) = Me
End Sub
--
Ciao, Silv:o)

 End Sub
Invece non funziona. O meglio funziona solo se le form vengono scaricate
nell'ordine inverso a quello di caricamento, perché la Set che esegue
nell'Unload non setta un bel niente.
Non avevo considerato che non posso usare array come variabili pubbliche
nelle form.
Lo compilava lo stesso perché avevo dichiarato myForms as Variant (per usare
l'istruzione Array() :(  ).
Ecco che tornano a galla due tormentoni del ng: variabili globali nei moduli
e Variant!
Nel caso specifico basta dichiarare myForms in un modulo e tutto va a posto.
Oppure un metodo AddForms nella form principale, se proprio non si
digeriscono i moduli.
--
Ciao, Silv:o)