Autore Topic: [RISOLTO]form child  (Letto 3596 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: form child
« Risposta #15 il: 09 Novembre 2009, 12:23:17 »
@md9327

dopo varie prove ho optato per il tuo primo consiglio "l'array"

ho creato una classe

Codice: [Seleziona]
' Gambas class file
STATIC PUBLIC MyForm AS Object[20]

STATIC PUBLIC FUNCTION InsForm() 'inserisce i form nell'array
 
  DIM i AS Integer
   i = 0

IF (NOT Object.IsValid(MyForm) OR IsNull(MyForm)) THEN
MyForm[0] = m1.MyNaF
ELSE
   FOR EACH MyForm
      IF MyForm[i] = NULL THEN
      MyForm[i] = m1.MyNaF
      STOP EVENT
      RETURN
      END IF
   INC i '
   NEXT
END IF
m1.MyNaF = NULL  
CATCH  
  Message.Error(Error.Text)  
END

STATIC PUBLIC FUNCTION DelForm() 'cancella i form nell'array
 
  DIM i AS Integer
   i = 0

IF (Object.IsValid(MyForm) OR NOT (IsNull(MyForm))) THEN
   FOR EACH MyForm
      IF MyForm[i] = m1.MyNaF THEN
      MyForm[i] = NULL
      END IF
   INC i '
   NEXT
END IF
m1.MyNaF = NULL    
CATCH  
  Message.Error(Error.Text)  
END

STATIC PUBLIC FUNCTION IcoForm() 'nasconde i form
 
  DIM i AS Integer
   i = 0

IF (NOT Object.IsValid(MyForm) OR IsNull(MyForm)) THEN
FMain.Minimized = TRUE
ELSE
   FOR EACH MyForm
      IF MyForm[i] <> NULL THEN
      MyForm[i].hide
      END IF
   INC i '
   NEXT
   FMain.Minimized = TRUE
END IF
CATCH  
  Message.Error(Error.Text)  
 
END

STATIC PUBLIC FUNCTION MaxForm() 'mostra i form
 
  DIM i AS Integer
   i = 0

IF (NOT Object.IsValid(MyForm) OR IsNull(MyForm)) THEN
FMain.Minimized = FALSE
FMain.Maximized = TRUE
ELSE
   FOR EACH MyForm
      IF MyForm[i] <> NULL THEN
      MyForm[i].show
      END IF
   INC i '
   NEXT
   FMain.Minimized = FALSE
   FMain.Maximized = TRUE
END IF
CATCH  
  Message.Error(Error.Text)
END

STATIC PUBLIC FUNCTION CloForm() 'prima della chiusura controlla i form
  DIM ret AS Integer
  DIM i AS Integer
  DIM MyCoF AS Boolean

IF (NOT Object.IsValid(MyForm) OR IsNull(MyForm)) THEN
QUIT
ELSE
   MyCoF = FALSE
   i = 0
   FOR EACH MyForm
      IF MyForm[i] <> NULL THEN
         IF MyForm[i].fasmod = TRUE THEN MyCoF = TRUE 'controlla i form in fase di modifica
      END IF
   INC i '
   NEXT

   IF MyCoF = FALSE THEN 'se nessun form è in fase di modifica chiude
      QUIT
   ELSE
   i = 0
   FOR EACH MyForm
      IF MyForm[i] <> NULL THEN
         IF MyForm[i].fasmod = TRUE THEN
            IF Message.Error(m1.MyNamA & " Hai un form in fase di modifica!!", "Apri Form", "Chiudo") = 1
                  MyForm[i].show
                  STOP EVENT
                  RETURN
               ELSE
                  QUIT
            END IF
         
         END IF
     
      END IF
   INC i '
   NEXT
   END IF
END IF
CATCH  
  Message.Error(Error.Text)  
 
END


nei form

Codice: [Seleziona]
PUBLIC SUB Form_Open()

  m1.MyNaF = Form1
  FMdi.InsForm
END

PUBLIC SUB Form_Close()

  m1.MyNaF = Form1
  FMdi.delForm
  ME.close
CATCH  
  Message.Error(Error.Text)  

END


il tutto funziona, ora devo solo inserire nell'evento iconize del main.

il problema è che non riesco a trovare l'evento iconize, ho provato nel resize ma non funziona mi arriva in ritardo, e cioè quando riduco a icona non succede nulla, quando riapro il main mi nasconde le form.

io uso il main a pieno schermo e non ridimensionabile.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: form child
« Risposta #16 il: 12 Novembre 2009, 11:36:03 »
Se non ricordo male, il metodo è Minimize, o similare...
Al momento non ho possibilità di verificare...

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: form child
« Risposta #17 il: 12 Novembre 2009, 21:46:34 »
si l'evento è minimize.

il problema è come far intercettare al form questo evento.
in resize risponde in ritardo.

cmq ho risolto in un modo un pò ortodosso ma funziona.

appena metto a punto il tutto ho intenzione di pubblicarlo nei progetti in cerca di aiuto, in questo modo altri potranno intervenire e migliorare il codice, altri potrebbero prendere idee per i loro progetti.

md grazie dell'aiuto e alla prossima

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: form child
« Risposta #18 il: 12 Novembre 2009, 23:24:05 »
Se hai risolto ti sarei grato se inserissi [RISOLTO] nel titolo

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: form child
« Risposta #19 il: 13 Novembre 2009, 00:47:50 »
Ceskho

ordina e sarai accontentato.

ps. ne approfitto per chiederti un favore, sul tuo sito volevo scaricare la calcolatrice per inserirla nel mio progetto, ma mi dà sempre errore.

mi passi il link diretto?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO]form child
« Risposta #20 il: 13 Novembre 2009, 13:54:29 »
[OT] Sto cambiando il sito di hosting per i file..se attendi poi ti passo il link...

Ok....fatto...vai a questo indirizzo: http://soluzionisoftware.netsons.org/vari.html

lì, nella colonna di destra potrai scaricare i sorgenti della calcolatrice...spero ti torni utile...:-)
[/OT]

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [RISOLTO]form child
« Risposta #21 il: 13 Novembre 2009, 22:15:35 »
grazie
la inserisco nel mio progetto

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO]form child
« Risposta #22 il: 13 Novembre 2009, 22:18:45 »
Se vuoi lascia un commento sul blog...;-)
Lo trovi in firma...

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [RISOLTO]form child
« Risposta #23 il: 14 Novembre 2009, 01:07:02 »
fatto.

ne ho approfittato per lasciarti un suggerimento su alcune modifiche.

ciao