' dichiaro la classe secondaria
Public seconda As CSeconda
Public Sub Form_Open()
' istanzio la classe secondaria
seconda = New CSeconda As "seconda"
End
Public Sub Button1_Click()
' vado a creare e riempire l'array:
' ogni clic è un Form in più a disposizione:
seconda.creaform()
End
Public Sub Button2_Click()
' mostro i Form dell'array uno ad uno ad ogni clic:
seconda.verifica()
End
Public Sub Button3_Click()
' poi sadicamente li distruggo tutti, tranne il form principale:
seconda.formDelendaSunt()
End
Private obja As New Object[]
Private k As Integer
Private j As Byte
Public Sub creaform()
Dim fo As Form
' istanzio un Form:
fo = New Form As "fo"
' lo aggiungo ad un elemento dell'array:
obja.Add(fo)
End
Public Sub verifica()
Dim box As New Form
' evito di superare il numero di elementi dell'array:
If j > obja.max Then Return
k = k + 30
box = obja[j]
' vado a mostrare di fatto un form:
With box
.W = 150
.H = 150
.X = k
.Y = k
.Show
.TopOnly = True
End With
Inc j
End
Public Sub formDelendaSunt()
Dim formelle As Form
' i form creati vengono distrutti immediatamente:
For Each formelle In obja
formelle.Close
Next
Print "Form secondari tutti kaput ! "
End
... non hai dichiarato, né istanziato la classe FMid nella classe principale FMain.
Poi credo si debbano togliere tutte quelle dichiarazioni "Static"...
...forse dovresti anche istanziare il modello dei Form nella classe FMdi...
...credo anche mettere Public MyForm As New Object[]... :-\
...MyForm.add = ...non va bene...
ho provato a togliere static ma va in errore..ma... io l'ho dovuto togliere dovunque, se no avevo errore.
se .add non và bene, come faccio a far caricare l'array?Add va bene, ma non con il segno =
ho provato a togliere static ma va in errore..ma... io l'ho dovuto togliere dovunque, se no avevo errore.se .add non và bene, come faccio a far caricare l'array?Add va bene, ma non con il segno =
Guarda l'esperimento che ho fatto sopra. In particolare nel codice della classe secondaria c'è un esempio con add(...)
Public Sub Form_Open()
' istanzio la classe secodaria
seconda = New CSeconda As "seconda"
End
non riesco a far funzionare il tuo esempio, in questo punto non ho capito seconda di cosa si tratta.
in questo punto non ho capito seconda di cosa si tratta.E' una classe secondaria (oltre a quella principale FMain).
Nelle varie prove ho anche tolto static, ma in form1 quando tento di fra caricare l'array mi dice errore: non static.
Public Sub Form_Open()
FMain.mdi.MyNaF = Form1
FMain.mdi.InsForm()
End
Public mdi As FMdi
Public Sub Form_Open()
mdi = New FMdi As "mdi"
End
Nelle varie prove ho anche tolto static, ma in form1 quando tento di fra caricare l'array mi dice errore: non static.
In Form1 io ho cambiato così:Codice: gambas [Seleziona]
Public Sub Form_Open()
FMain.mdi.MyNaF = Form1
FMain.mdi.InsForm()
End
Tieni conto che quel nome "mdi" è il nome che ho dato alla classe FMdi.Class all'atto della sua istanziazione in FMain:Codice: [Seleziona]Public mdi As FMdi
Public Sub Form_Open()
mdi = New FMdi As "mdi"
End
...come si fa nel mio caso che devo solo aprire un form e caricarlo nell'array?...scusami, ma non ho capito bene :-\ quello che vuoi fare. Puoi spiegarti meglio, più in dettaglio ?
...come si fa nel mio caso che devo solo aprire un form e caricarlo nell'array?...scusami, ma non ho capito bene :-\ quello che vuoi fare. Puoi spiegarti meglio, più in dettaglio ?
provato a fare le correzioni ma va sempre in errore.
provato a fare le correzioni ma va sempre in errore.
Allora.. nella classe secondaria FMdi.class aggiungi la parola New qui, così:
Public MyForm As New Object[]
avevo già provato ad aggiungere New, non entra nella routine per caricare l'array.
esatto con new non da errore, ma non entra nel codice.avevo già provato ad aggiungere New, non entra nella routine per caricare l'array.
E' strano, a me non dà errore solo se aggiungo New.
If (Not Object.IsValid(MyForm) Or IsNull(MyForm)) Then
Su gambas 2 avevo realizzato un piccolo programma per getire dei form tipo MDI, ora lo volevo usare su gambas 3 e sono non riesco ad uscirne.
Su gambas 2 avevo realizzato un piccolo programma per getire dei form tipo MDI, ora lo volevo usare su gambas 3 e sono non riesco ad uscirne.
A me dice che manca qualche componente gb.info ed un altro.
Poi PrintPdf.show mi dice che è sconosciuto.
Poi errore di sintassi qui: Static Public MyForm As Object[20].... magari cambialo così: Public MyForm[20] As Object
Poi errori determinati dalla presenza della parola "Static"...
Attenzione però ! Io lavoro conGambas 3 !!!
Per errori di sintassi è proprio li che non riesco ad uscirne.
Per errori di sintassi è proprio li che non riesco ad uscirne.
Public Sub Codabar(xpos As Float, ypos As Float, code As String, Optional starts As String = "A", Optional Ends As String = "A", Optional basewidth As Float = 0.35, Optional height As Float = 16)
Qua non va bene quell' Ends . Devi modificargli il nome. Basta aggoingere una lettera.
Non ricordo se ho dovuto aggiungere pure una virgola, tra un parametro e l'altro.
Aggiunta:
FMdi.MaxForm mi dà errore. Forse perché la classe non è dichiarata né istanziata....
Ho fatto come prima: le ho dato nome: mdi.
Sono arrivato ad un punto in cui non ho errori, ma non succede niente... cosa dovrebbe accadere quando lancio il tuo programma ? ???
Public Sub Codabar(xpos As Float, ypos As Float, code As String, Optional starts As String = "A", Optional Ends As String = "A", Optional basewidth As Float = 0.35, Optional height As Float = 16)
Per errori di sintassi è proprio li che non riesco ad uscirne.
Public Sub Codabar(xpos As Float, ypos As Float, code As String, Optional starts As String = "A", Optional Ends As String = "A", Optional basewidth As Float = 0.35, Optional height As Float = 16)
Qua non va bene quell' Ends . Devi modificargli il nome. Basta aggoingere una lettera.
Non ricordo se ho dovuto aggiungere pure una virgola, tra un parametro e l'altro.
Aggiunta:
FMdi.MaxForm mi dà errore. Forse perché la classe non è dichiarata né istanziata....
Ho fatto come prima: le ho dato nome: mdi.
Sono arrivato ad un punto in cui non ho errori, ma non succede niente... cosa dovrebbe accadere quando lancio il tuo programma ? ???
quando si apre il main apri altri form, poi riduci il main ad icona se anche gli altri form si riducono ad icona funziona, se invece glialtri form restano sullo schermo vuol dire che l'array non è stato caricato.A me non si apre niente, non vengono sollevati errori, ma non si apre alcun Form.
quando si apre il main apri altri form, poi riduci il main ad icona se anche gli altri form si riducono ad icona funziona, se invece glialtri form restano sullo schermo vuol dire che l'array non è stato caricato.A me non si apre niente, non vengono sollevati errori, ma non si apre alcun Form.
Evidentemente c'è ancora qualche problema ! :-\
Comunque volevo dirti che in via generale sono riuscito a caricare nell'array anche dei form già esistenti (nell'esempio 2 form).
Sono partito dal sorgente bozza da te allegato nei primissimi messaggi.
Il procedimento è sostanzialmente identico a quello fatto da me per i form creati da codice
Nel sorgente allegato possono vedere il nome dei due Form esistenti (non creati da codice) e posso ridimensionarli, prendendo il loro riferimento dall'array nel quale essi sono caricati.
risoltoSono contento. :coder:
grazie alla pazienza di vuott sono riuscito a correggere il mio codice, ora funziona tutto.
risoltoSono contento. :coder:
grazie alla pazienza di vuott sono riuscito a correggere il mio codice, ora funziona tutto.
Ti confesso che non avrei mai scommesso di poter essere d'aiuto fattivo :o in una questione complessa come quella da te posta !