Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354

    [vb6]Refresh da un form all'altro

    Come si può fare il Refresh, con un comando, di un Frame (e quindi del suo contenuto) presente in un altro form??

    ho provato con:

    codice:
    Form1.Frame1.Refresh
    però non sortisce alcun effetto

  2. #2
    Ciao..innanzitutto chiariscimi il "tuo" concetto di Refresh: questo non per insinuare che non lo sai ma per esperienza personale ti posso dire che molte volte sul forum ci sono stati fraintendimenti proprio per differenze di concetti apparentemente banali..

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    già scusa.
    Allora, il progetto è così composto:
    l'utente avvia il programma, gli appare il Form1 (il quale ha delle textbox associate ad una Tabella2 di un DataBase1 (tabella vuota)). Cliccando su un comando gli apre un secondo Form (però mantenendo sempre attivo il primo).
    In questo secondo Form l'utente ha la possibilità di inserire nuovi dati all'interno della tabella1 del database1 o di selezionare già i presenti. una volta selezionati i presenti, cliccando su un comando salva i record selezionati su una Tabella2, chiude il Form2 e ritorna al Form1.

    quello che interessa a me è che al ritornare al Form1 si aggionino le textbox associate al database1 con i dati presenti alla Taballa2.
    tutto qui.

    ossia una specie di reload del frame...ma senza che mi chiuda e riapra tutto il Form1...

    se mi sono spiegato male faccio degli screenshot per spiegare meglio...

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    per queste esigenze, io generalmente procedo in questo modo:

    realizzo una routine che "inizializza" il form, e la rendo pubblica nel Form che la utilizza preminentemente, o se possibile, Public in un Modulo con un argomento che permette di specificare il form chiamante.

    dopo di che, nell'evento Load del form che richiede l'inizializzazione chiamo semplicemente la routine precedente.

    in questo modo, la routine può essere chiamata in qualsiasi momento per aggiornare la visualizzazione del form e soprattutto, badando al tuo caso, da qualsiasi form tu voglia.

    se la metti nel form che la utilizza chiamerai

    Form1.Inizializza

    altrimenti se è pubblica nel modulo ma con il riferimento al Form:

    Inizializza (Form1)

    Boolean

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    Ho provato, ma mi sa che ho sbagliato qualcosa...

    con "inizializza" cosa intendi di preciso?

    riesci a scrivere un codice d'esempio?

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    non posso scriverti un codice d'esempio... per il semplice fatto che non ho idea di cosa tu faccia nell'evento load de tuo form!

    ti faccio un esempio...

    apri il form e nell'evento load cancelli tutti i textbox presenti...

    se ad un certo momento dovessi avere la necessità di cancellare i textbox come fai? chiudi e riapri il form? o ri scrivi le righe di cancellazione di nuovo?!

    nulla di tutto questo...

    ti crei una routine, ad esempio "CancellaTextBox" che faccia quello che ti serve... e la richiami ogni volta che ne hai la neessità... evento Load compreso...

    Boolean

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    ok, capito...già lo faccio un passaggio simile.

    Ora però, vediamo, è un po' come LeggiDalDb...ossia gli faccio leggere i dati dal database:

    Nel FORM1:
    codice:
    Public Sub LeggiDalDb()
        txtSocietà = rs.Fields(0)
        txtCognome = rs.Fields(1)
        txtNome = rs.Fields(2)
        txtVia = rs.Fields(3)
        txtNumero = rs.Fields(4)
        txtCap = rs.Fields(5)
        txtCittà = rs.Fields(6)
        txtProvincia = rs.Fields(7)
        txtStato = rs.Fields(8)
    End Sub
    Nel FORM2:

    form1.LeggiDalDb

    giusto?

    però così non funzia...

  8. #8
    Originariamente inviato da Folcus
    ok, capito...già lo faccio un passaggio simile.

    Ora però, vediamo, è un po' come LeggiDalDb...ossia gli faccio leggere i dati dal database:

    Nel FORM1:
    codice:
    Public Sub LeggiDalDb()
        txtSocietà = rs.Fields(0)
        txtCognome = rs.Fields(1)
        txtNome = rs.Fields(2)
        txtVia = rs.Fields(3)
        txtNumero = rs.Fields(4)
        txtCap = rs.Fields(5)
        txtCittà = rs.Fields(6)
        txtProvincia = rs.Fields(7)
        txtStato = rs.Fields(8)
    End Sub
    Nel FORM2:

    form1.LeggiDalDb

    giusto?

    però così non funzia...
    Se era giusto funzionava..apparte gli scherzi la chiamata alla funzione va bene: dove sono ubicate queste textbox? Cioè in quale form?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    sono ubicate nel form1...ma la cosa strana mi da errore con il sub del public...devo forse mettere un qualche parametro?

  10. #10
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    codice:
    Public Sub LeggiDalDb()
        txtSocietà = rs.Fields(0)
        txtCognome = rs.Fields(1)
        txtNome = rs.Fields(2)
        txtVia = rs.Fields(3)
        txtNumero = rs.Fields(4)
        txtCap = rs.Fields(5)
        txtCittà = rs.Fields(6)
        txtProvincia = rs.Fields(7)
        txtStato = rs.Fields(8)
    End Sub
    in questa routine non vedo nessun riferimento al form1... e probabilmente è qui l'errore...
    dico probabilmente perchè, diligentemente, hai "dimenticato" di dire numero e descrizione dell'errore...

    per risolvere hai 2 strade... o poni un riferimento dinamico, nel caso tu voglia utilizzare questa routine anche in altri forms, dove sono presenti gli stessi textbox, o indichi contestualmente ai nomi dei controlli, il nome del form "padre":

    quindi o così (riferimento dinamico):
    codice:
    Public Sub LeggiDalDb(Where As Form)
    With Where
        .txtSocietà = rs.Fields(0)
        .txtCognome = rs.Fields(1)
        .txtNome = rs.Fields(2)
        .txtVia = rs.Fields(3)
        .txtNumero = rs.Fields(4)
        .txtCap = rs.Fields(5)
        .txtCittà = rs.Fields(6)
        .txtProvincia = rs.Fields(7)
        .txtStato = rs.Fields(8)
    End With
    End Sub
    o "statico":
    codice:
    Public Sub LeggiDalDb()
    With Form1
        .txtSocietà = rs.Fields(0)
        .txtCognome = rs.Fields(1)
        .txtNome = rs.Fields(2)
        .txtVia = rs.Fields(3)
        .txtNumero = rs.Fields(4)
        .txtCap = rs.Fields(5)
        .txtCittà = rs.Fields(6)
        .txtProvincia = rs.Fields(7)
        .txtStato = rs.Fields(8)
    End With
    End Sub
    in pratica cambia poco...

    resta da vedere, però, se anche la visibilità del Recordset è quella del Form1... in tal caso devi specificare anche la "paternità" di rs

    Boolean

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