+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Attendere dati da un altro form

  1. #1
    L'avatar di Guizzo
    Guizzo non è in linea Novello
    Post
    21

    Attendere dati da un altro form

    Scusate, ho provato a cercare nel forum ma con nessun risultato.
    Il mio problema è questo, e sicuramente qualcuno lo avrà già spiegato migliaia di volte:
    Ho un form1 con una griglia di dati ordinati per data, cliccando su un bottone si apre un form2 contenete due controlli monthview 2 textbox 2 bottoni e 2 label. Io volgio che quando l'utente ha teminato di impostare le due date (Il tipico caso "dal al" ) cliccando su uno dei 2 bottoni il form1 venga aggiornato in base a quelle date.
    Ho provato mettendo un timer nel form1 e una variabile booleana ma cosi facendo sono costretto a selezionare 2 volte uno dei 2 bottoni ( con le text box e i monthview funziona normalmente)
    Praticamente avrei bisogno di un form tipo quello che viene generato dall'inputbox solo che dovrei personalizzarlo per le mie esigenze....

    Grazie per l'attenzione e se avete bisogno di chiarimenti (perchè so complicare anche le cose più facili) chiedete...

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,178
    Blogs
    3
    prova a sfruttare l'evento Unload del Form2 per aggiornare il Form1, poichè puoi benissimo accedere ai controlli del Form1 anche dal Form2, basta anteporre il nome del Form... ad esempio, da Form2:

    codice:
    Form1.Text1.Text = "Quello che vuoi"
    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  3. #3
    L'avatar di Guizzo
    Guizzo non è in linea Novello
    Post
    21
    Il problema principale è che al termine del form2 il form1 deve rielaborare la griglia in base alle date scelte dall'utente e, come problema di contorno, il form1 non è sempre lo stesso che chiama il form2... quindi quando faccio la chiamata al form2 dovrei sempre passare il nome del form che chiama ( è un'applicazione MDI prima non lo avevo specificato ) e nei form che chiamano il form2 dovrei mettere una sub pubblica per far eseguire il codice che mi serve... Il punto è che quando appare il form2 gli altri form devono essere disabilitati.... speravo che esistesse già qualcosa (simile al msgbox o inputbox) che mi potesse togliere di impiccio facilmente senza farmi riverificare tutto il sorgente e rieseguire tutti i test di funzionamento.....

    Cercavo una scorciatoia... ma se non ne avete... mi arrangierò inserendo le sub pubbliche che vengono richiamate dal form2.

  4. #4
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,178
    Blogs
    3
    beh... il propblema è più articolato di quanto hai lasciato intendere con la spiegazione iniziale... ecco perchè il problema va spiegato nei dettagli, altrimenti si perde tempo a chiedere ulteriori chiarimenti.

    comunque... per rendere inattivo il form chiamante il Form2 basta chiamare il Form2 in maniera modale, ovvero:

    codice:
    Form2.Show vbModal
    per quanto riguarda la routine da eseguire sui diversi Forms chiamanti, se vuoi farne una generale, per identificare il Form chiamante attivo in quel momento basta dichiarare un variabile, o al livello di modulo quindi con visibilità globale, o sul Form2, che possa contenere il riferimento al Form chiamante.
    in sostanza, nel Form2 o in un Modulo dichiari:

    codice:
    Public frmChiamante As Form
    e prima di chiamare il Form2, da qualsiasi Form tu lo faccia, scrivi:

    codice:
    Set Form2.frmChiamante = Me
    Form2.Show vbModal
    in chiusura al Form2, chiami la routine che ti serve per l'aggiornamento, sfruttando la variabile oggetto col riferimento al Form chiamante:

    codice:
    Private Sub Form2_Unload()
    With frmChiamante
        .Text1.Text= "Quello che vuoi"
        .Text2.Text= "Un'altra cosa"
        ....
        ....
    End With
    End Sub
    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  5. #5
    L'avatar di Guizzo
    Guizzo non è in linea Novello
    Post
    21
    Scusa colpa mia, l'ho detto so complicare le cose più facili....
    Ora ho provato subito il tuo suggerimento
    Form2.Show vbModal
    ma il form2 è un form MDI secondario ed anche gli eventuali form1 sono tutti MDI secondari e di conseguenza non funziona. Sai se esiste qualcosa di simile anche per i form MDI secondari altrimenti eleverò questo form.

    Grazie per l'aiuto e scusa ancora per la mia confusione....
    Guizzo

  6. #6
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,178
    Blogs
    3
    che cosa intendi per "MDI secondari"?

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  7. #7
    L'avatar di Guizzo
    Guizzo non è in linea Novello
    Post
    21
    Un form MDI secondario è come un form normale solo che vive solo ed esclusivamente in un form MDI principale. Per esempio gli applicativi come Acrobat reader, paint shop ed altri sono formati da più finestre di cui una è la principale (MDI principale) e i file o i tools vengo aperti in finestre che non possono uscire dal MDI form principale... quando si riduce ad icona un form mdi secondario questo non andrà sulla barra di win ma resta sempre all'interno del form MDI principale....
    Dal manuale di vb6 che uso: "MDI è l'acronimo di Multiple Document Interface, termine impiegato da Microsoft per indicare un ambiente in cui una finestra, in genere chiamata contenitore MDI (o finestra principale ), contiene molte altre finestre chiamate form secondari".
    Guizzo

  8. #8
    Hyde non è in linea Scolaretto
    Luogo
    Roma
    Post
    325
    In effetti non è possibile utilizzare form modali con architettura MDI.

    In questo caso, quindi, devi cercare una soluzione alternativa.

    Potresti usare una classe globale (i cui membri sono tutti i dati che ti occorrono)con un flag se ti dice se sono stati modificati tali dati. Il form chiamante attiva un timer che controllerà questa variabile ed eventualmente aggiorna i suoi dati...

    Questa potrebbe essere una via... magari ce ne sono anche altre più performanti...

+ Rispondi al Thread

Discussioni simili

  1. Risposte: 12
    Ultimo Post: 11-01-2006, 12:07
  2. Ordinare i dati di una tabella in una form
    Da Elimar nel forum Microsoft Office, Access, VBA
    Risposte: 1
    Ultimo Post: 15-11-2005, 16:13
  3. passaggio dati tra form
    Da misterwolf nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 12-11-2005, 18:27

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi