+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

L'evento Click viene eseguito una sola volta

  1. #1
    Cereal Killer non è in linea Scolaretto
    Post
    132
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buonasera.

    Sto lavorando ad un programma insieme ad alcuni miei amici. Nell'attesa che uno di questi finisca la progettazione di un componente ActiveX necessario al programma, io sto arrangiandomi usando temporaneamente la libreria FM20.dll

    Mi si verifica una cosa alquanto strana quando cerco di eseguire questo codice (NOTA: è solo d'esempio, nella realtà è più complesso, però ripropone il problema)
    'Form1
    Private Sub MSFormLabel_Click()
        MSFormLabel.Visible = False
        Form2.Show
        Do While Form2.Visible
             DoEvents
        Loop
        MSFormLabel.Visible = True
        Unload Form2
        MsgBox "Prova a ri-cliccarmi!"
    End Sub
    
    'Form2
    Private Sub Form_Click()
       Me.Hide
    End Sub
    
    Ciò che si verifica è che una volta verificatosi l'evento MSLabel_Click non posso più cliccare nuovamente sulla stessa label!

    Per capire se fosse un problema di programmazione, ho anche usato lo stesso codice inserito però questa volta in una label standard di VB. Nella label standard tutto funziona bene, posso cliccarci sopra quante volte voglio ed il codice viene sempre eseguito, mentre nel controllo label della libreria FM20 no.

    Ripeto: l'uso di questa libreria è solo temporaneo finchè non ho l'ocx di questo mio amico. Però, mi serve una soluzione ora per poter finire il test del programma, e nel caso far aggiungere caratteristiche al componente in fase di progettazione.


  2. #2
    L'avatar di gibra
    gibra ora è in linea Very Important Person
    Post
    6,239
    Like Inviati  
    21
    Like Ricevuti  
    11
    La libreria FM20 NON deve essere utilizzata in VB6, perchè NON è fatta per VB6 ma per Office.
    Non si può usare, né distribuire.
    Fai una ricerca, se n'è parlato diverse volte.
    ℹ️ Leggi di più su gibra ...

  3. #3
    Cereal Killer non è in linea Scolaretto
    Post
    132
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da gibra Visualizza il messaggio
    La libreria FM20 NON deve essere utilizzata in VB6, perchè NON è fatta per VB6 ma per Office.
    Non si può usare, né distribuire.
    Lo so e l'ho detto: è una pezza per tamponare la MOMENTANEA mancanza dell'oggetto su cui dovrò lavorare quando questo mio amico si deciderà a finire l'ocx necessario al progetto.

    La FM20 serve per non rimanere con le mani in mano a mia volta aspettando il Messia. Ma nel frattempo, se riscontro problemi con l'uso di questa libreria, devo risolverli per riuscire a testare il resto del programma, o no?

    Appena avrò il componente che mi serve, sostituirò la FM20.

    Sai perchè si verifica questo comportamento? Se ci sono cure a proposito, o qualche trucchetto per far si che non si blocchi? Perchè il codice postato funziona senza bloccare i controlli standard di VB, ma solo quelli della FM20.

    Ripeto per l'ennesima volta: è una pezza per poter continuare a lavorare in mancanza degli strumenti adatti!

  4. #4
    Post
    17,506
    Blogs
    6
    Like Inviati  
    6
    Like Ricevuti  
    35
    Quello che vuole sottolineare Gibra è che questi malfunzionamenti non sono veri e propri bug perché i controlli in questione non sarebbero utilizzabili con VB6 (e quindi il loro funzionamento non è garantito o comunque supportato in questo contesto da MS). Quindi potrai avere altri problemi (anche se la tua soluzione è temporanea ...).

    Per ovviare al problema (che è nella proprietà Visible della Label) puoi fare così

    1) posizione un frame normale, senza titolo e senza bordo, sopra la Label e imposta il Visible del frame a False

    2) modifica il codice così

        Frame1.Visible = True
        Form2.Show
        Do While Form2.Visible
             DoEvents
        Loop
        Frame1.Visible = False
    
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,145
    Like Inviati  
    6
    Like Ricevuti  
    5
    O, più semplicemente, rendi modale Form2.
    In una precedente discussione avevamo cercato di sconsigliarti l'uso di loop di attesa.
    ℹ️ Leggi di più su Brontolo ...

  6. #6
    Cereal Killer non è in linea Scolaretto
    Post
    132
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Quello che vuole sottolineare Gibra è che questi malfunzionamenti non sono veri e propri bug perché i controlli in questione non sarebbero utilizzabili con VB6 (e quindi il loro funzionamento non è garantito o comunque supportato in questo contesto da MS). Quindi potrai avere altri problemi (anche se la tua soluzione è temporanea ...).
    Ooops, non avevo capito....

    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    O, più semplicemente, rendi modale Form2.
    In una precedente discussione avevamo cercato di sconsigliarti l'uso di loop di attesa.
    Anche usando modale Form2, il problema rimarrebbe lo stesso: la MSLabel deve 'sparire', non si deve vedere in Form1, e quando Form2 viene scaricato, allora la MSLabel deve riapparire.

    E' un fattore di grafica del programma. Non chiedetemi perchè, ma è così


    Comunque, ora mi fiondo a provare il suggerimento di Antonio.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Visualizzare una sola volta il foglio1
    Da magili53 nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 06-04-2017, 22:00
  2. Risposte: 20
    Ultimo Post: 02-02-2017, 09:02
  3. Aprire una sola sessione per volta
    Da indigo5 nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 08-06-2016, 10:56
  4. evento form load - non viene eseguito - Visual Studio 2010
    Da Luca Cannavò nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 02-09-2013, 08:21
  5. Controllo ToolTip che viene visualizzato solo una volta
    Da Gossip nel forum Visual Basic .Net
    Risposte: 17
    Ultimo Post: 23-12-2007, 17:33