Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178

    [VB6] MDIForm e Child... ancora queste maledette

    perdonate i numerosi quesiti che ho postato su questo argomento... ma per me è davvero un argomento sconosciuto.

    ebbene... sono riuscito a creare delle child... :maLOL:
    ora xo c'e un'altro problema

    utilizzo un modulo per gestire le scrollbars e la centratura delle label all'interno del formchild, quindi ogni volta che voglio richiamare questo evento scrivo, per esempio, all'interno di Form_resize:

    codice:
    Modulo1.ScrollBars
    il problema e che se creo un nuovo form in questo modo:

    codice:
    Dim frmProgetto2 As New frmProgetto1
    frmProgetto2.Visible = True
    frmProgetto2.Caption = "Progetto 2"
    l'evento Modulo.ScrollBars non funziona, infatti le scroll bar non funzionano e le label all'interno del form non si centrano. Ho provato a richiamare Modulo1.Scrollbars all'interno di Form_Load, ma niente.

    altro problema...

    nel MDIForm ho una ToolBar con dei comandi, il problema è che tutti i comandi che uso, non modificano il nuovo "frmProgetto2" ma il vecchio "frmProgetto1". sicuramente il problema e legato al fatto che ad ogni comando del MDIForm ho assegnato alle operazione da compiere il prefisso di "frmProgetto1." quindi è ovvio che le operazioni vengono eseguite in quest'ultimo.

    Spero che qualcuno abbia la pietà di aiutarmi per l'ennesima volta

  2. #2
    Innanzitutto il primo problema: è impossibile rispondere in quanto dipende tutto da cosa hai scritto nella sub del modulo.
    Posta il contenuto, l'errore è sicuramente lì.

    Secondo problema: la toolbar non è indovina; se te scrivi in un form, chiaramente opera in quello, quindi o devi fare in modo di "far capire" al programma quale form vuoi modificare (per esempio con un msgbox oppure inputbox..)

    Ciao

  3. #3
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    hmmm.. ora che ci penso credo ke il problema nel codice del modulo è lo stesso dell'altro... infatti anche all'interno del modulo le operazioni hanno un prefisso "frmProgetto1."

    cmq per quanto hai scritto delle le msgbox o inputbox... nn ho ben capito... potresti spiegarti meglio? forse intendi dire che al posto di
    codice:
    With frmProgetto1
      ...
      ...
      ...
    End With
    mettere una variabile a cui assegnare il nome del form, ad esempio

    codice:
    With Variabile
      ...
      ...
      ...
    End With
    ? ma funziona??

    e poi un'altra cosa... se ci sono per esempio due form aperti nello stesso MDI, vorrei che attivando (con un click sul form) per esempio il "Progetto2" mi esegua le operazioni in quel progetto, e non nell'altro progetto aperto ovver "Progetto1"... esiste qualche comando sepcifico? tipo getFocus o ActiveForm (sto sparando a caso)... capisci cosa intendo?

  4. #4
    No, non intendevo quello. Io dico: te crei un form identico al primo in run-time, cioè non manualmente ma da codice, esatto?
    Quindi non puoi predisporre anticipatamente le azioni ad esempio della toolbar, nel senso che puoi mettere form1 o form2..il tuo problema è quello, vero?
    Se in uno strumento della toolbar metti, per esempio:
    form1.text1.text = "ciao"
    quando carichi il form2 e premi lo strumento te lo scrive nel form1 ma te lo vorresti nel form2, giusto?
    Ecco che allora occorre trovare un modo per far capire al programma dove indirizzare il comando, quindi per esempio potresti verificare lo stato delle finestre alla pressione del pulsante dello strumento e quindi far eseguire il comando al form attivo..

    fammi sapere..

    ciao

  5. #5
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    Si, perfettamente quello che hai scritto.
    Ed il problema è proprio quello che hai scritto, ovvero non riesco a trovare un modo per far capire al programma dove indirizzare il comando, e di verificare lo stato delle finestre alla pressione del pulsante, e far eseguire il comando al form attivo... io pensavo a qualche comando del tipo GetFocus o ActiveForm... ma sto sparando a caso e probabilmente questi comandi non esistono, e anche se fosse non li saprei usare



  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    da mettere nel codice dell'MDIForm:

    codice:
    Dim FormAttivo As Form
    Set FormAttivo = Me.ActiveForm
    FormAttivo.Text1.Text = "Pippo"
    Boolean

  7. #7
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    @ Boolean Ah ecco... avevo quasi indovinato.
    Cmq grazie miller per il codice... e scusa se ti rompo ancora, ma, se ti va, mi potresti spiegare a che serve "Set"? E' una cosa che avevo spiegato anche a MdE2005(<-Sei un GRANDE!)...siccome poi questo progetto lo devo consegnare al mio prof, dovrei riuscire a capire le cose che inserisco del codice
    scusa davvero se ti disturbo

  8. #8
    Ciao..scusa per l'interruzione ma vedo che ha già provveduto Boolean..
    Viene utilizzato il comando SET per identificare un oggetto preciso, (in questo caso un form) e non una variabile..

    ciao

    ps: vi insegnano il visual basic a scuola? Pensavo solo C..

  9. #9
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    nessun disturbo! figurati

    dunque, in teoria, ogni volta che assegni una variabile, sarebbe necessario specificare una istruzione che "faccia capire" al compilatore che stai appunto facendo un'assegnazione.

    quando si assegna una variabile, l'istruzione è Let ed è implicita... in pratica scrivere:

    Let A = 1 oppure A = 1 è la stessa identica cosa.

    quando si assegna una "variabile Oggetto", ovvero una variabile che conterrà un riferimento all'oggetto che gli si assegna, la cosa cambia leggermente, perchè il compilatore *deve sapere* che non stai assegnando una variabile semplice, ecco che qui entra in gioco il Set

    se il Let è implicito, il Set non lo è, quindi va specificato sempre prima di una assegnazione di un oggetto ad una variabile che conterrà il suo riferimento.

    se guardi nel codice io ho scritto:

    Set FormAttivo = Me.ActiveForm

    va da se, che FormAttivo è una variabile oggetto, che conterrà il riferimento restituito da Me.ActiveForm, che è sempre un oggetto.

    le variabili oggetto ereditano tutte le proprietà ed i metodi dell'oggetto cui fanno riferimento.

    in questo caso FormAttivo, è da trtattare come se fosse davvero un Form, quindi sarà possibile sapere il nome dell'oggetto cui si riferisce scrivendo:

    FormAttivo.Name

    o nasconderlo; FormAttivo.Hide

    o cambiarne la Caption: FormAttivo.Caption = "Pippo"

    o variarne la posizione: FormAttivo.Move 150,500

    etc...

    spero che sia chiaro... casomai chiedi pure

    Boolean

  10. #10
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    @MdE2005 nessun problema per l'interruzione^^ ne hai pienamente diritto visto tutte le volte che mi hai aiutato
    cmq si facciamo visua basic... il fatto è che in classe siamo arrivati al ciclo
    codice:
    For I=X To Y
     ...
    Next I
    questo significa che abbiamo fatto solo struttura di selezione, ciclo e assegnazione della variabili e le solite ca**ate, per questo a casa mi arrangio da solo.

    @Boolean sei stato chiarissimo! grazie mille
    ho assimiliato tutto

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 © 2024 vBulletin Solutions, Inc. All rights reserved.