Newsgroup: it.comp.appl.access
Titolo: Form continua e righe che 'sbampolano' se cursore e' sopra di esse

Access 2013, 32bit, Windows 10 pro
Ho una form continua che appena aperta, se il cursore del mouse e' sopra 
una delle righe corpo, le fa lampeggiare
E' come se l'esecuzione del codice venisse interrotta per far 
lampeggiare la riga sopra la quale e' il cursore sel mouse
Spostando il cursore nella testata della form l'effetto scompare ed il 
flusso del codice sembra riprendere normalmente
Mi rendo conto che la descrizione potrebbe non essere comprensibilissimo 
e quindi ho preparato un minifilmato (password 1235)
 
https://imgur.com/zhdMk4o
 
 
Quando dico 'il flusso codice sembra riprendere' intendo l'effetto che 
si vede alla fine del filmato dove appaiono i tasti colorati in basso, 
appaiono solamente quando il cursore mouse viene spostato dalle righe 
anche se da codice vengono colorati nel form load
 
Nella sezione 'corpo' nessun evento
Nelle textbox delle righe c'e' solo una funzione su evento doppio-click
 
Da cosa dipende il farfallio? Come eliminarlo?
 

 Da cosa dipende il farfallio? Come eliminarlo?
Mah... io non ne ho idea, forse qualche esperto sa darti qualche indicazione più precisa.
Hai un avento Su Timer?
Riusciresti a mettere un demo supersemplificato in cui comunque si riscontra il problema?

Hai qualche F.C. su un controllo nell Form in modalità continua..?
Hai qualche evento su MouseMove...?
Hai una Label Non associata...?
 
@Alex


Si, credo che il demo sia la robba mellio
Speravo nel colpo di genio di qualche buonanima
Ma mi sa che devo tagliare via e fare il demo
 

 Ma mi sa che devo tagliare via e fare il demo
 
Forse fai prima se inizi a sfrondare quella Form dalle varie features che certamente contiene, finchè non sparisce lo sfarfallio.
A quel punto capirai a cosa è dovuto.
 
Saluti


[+1]
 
@Alex


Sul Form_Current ho un evento per colorare di giallo lo sfondo delle 
textbox della riga, in sostanza evidenzia la riga corrente, ed e' 
questo, gia' provato, se elimino la riga dentro Form_Current il problema 
sbampolamento non c'e' piu', ma non c'e' neanche l'evidenziazione della riga
L'evidenziazione riga viene ottenuta tramite la Formattazione 
Condizionale impostata su textbox e combobox della riga
 
Form_Current
dummy = Evidenzia("[ID_VENDRIGHE]", Me!ID_VENDRIGHE, Me.Form)
 
Inoltre ho preparato un minidemo con solamente le funzioni usate dalla 
form incriminata, per i volenterosi che volessero darci un'occhiata e' 
qua   
http://79.6.34.199:65080/AGGIORNAMENTI/lettura/test/
 
 
naturalmente sul demo, la cui unica schermata e le funzioni richiamate 
sono IDENTICHE alla schermata vera del gestionale, il problema NON si 
presenta
Ricapitolando, la stessa identica schermata del demo, sulla stessa 
tabella dati del demo, le poche funzioni presenti nel demo, non danno il 
problema lamentato dello sfarfallamento righe che si vede nel video, 
mentre le analoghe sul gestionale danno l'effetto indesiderato dello 
sfarfallamento righe come si vede nel video
 
Questo fatto che dentro al gestionale faccia il problema, mentre fuori 
su file separato non lo faccia, mi disorienta un pochetto, perche' il 
codice/controlli della form e le funzioni usate sono identiche
 
Netx step: mettere cero a san Peppino     :)
(chissa' se esiste un santo specifico per i programmatori)
 
 

 su file separato non lo faccia, mi disorienta un pochetto
 
Togli dalla form (una sua copia) qualche oggetto visuale, un pò di codice, questo e quell'altro, fino a quando lo sfarfallio scompare.
A quel punto capirai cosa lo causa.
 
Saluti
 
P:S:  Ma hai provato a reimportare tutto in un nuovo accdb?
 
 

 ... il problema NON si presenta 
utilità del demo prossima al nulla quindi, se poi aggiungiamo che non compila... 
Però dà l'occasione di vedere qualcosa di orribile: la mancanza di Option Explicit.
Poi ci sono API e tante belle cose. Insomma... tu lo capisci quel codice, io non inizio nemmeno a guardarlo se non compila.

Il giorno martedì 27 settembre 2022 alle 17:17:07 UTC+2 RobertoA ha scritto:

La Routine EVIDENZIA, proveniente da un demo di Silvio, secondo me NON SERVE nel tuo caso... anzi è quella che probabilmente genera il FLIKERING in quanto distrugge e ricostruisce a RUNTIME la F.C. e secondo me non serve.
 
Posto che da me non genera il problema.
 
Per evidenziare la RIGA corrente, non serve tutto questo, basta mettere un controllo nell'intestazione della maschera con Origine Controllo il Controllo associato al Campo [ID_VENDITEALBANCORIGHE] e nella F.C. dei controlli la attivi quando il controllo di Confronto(non l'ho trovato perchè chiami campi e controlli differenti e non avevo tempo di cercarlo) è uguale alla TextBox Fittizia.
 
P.S. perchè chiami i controlli con NOMI diversi dai Campi...? E' una abitudine terribile... è così comodo avere riferimenti UGUALI tra NomeCampo e NomeControllo soprattutto nei Cicli...!
 
@Alex 


Ora compila
 
 


".. secondo me NON SERVE nel tuo caso..."
Si ok, se trovo una routine piu' semplice adottero' altro sistema
 
".. basta mettere un controllo nell'intestazione della maschera.."
Sostanzialmente e' la stessa cosa che succede adesso
Nella corpo c'e' una  txtEvidenzia  che col suo contenuto, aggiornato 
dentro la funzione 'evidenzia' verifica oppure no il confronto della FC 
di ogni textbox, se confronto verificato allora ingialla
 
"..P.S. perchè chiami i controlli con NOMI diversi dai Campi.."
Di solito ai controlli nel corpo assegno il nome del campo, ci aggiungo 
'riga' per distinguere la txtCodiceArticolo presente sulla testata della 
form dalla txtCodiceArticoloRiga presente sul corpo
 
Quello che mi sembra davvero molto strano e' il comportamento diverso 
tra demo e form reale dentro al gestionale, le form sono IDENTICHE, la 
tabella dati in locale e' identica, il codice che viene richiamato dalle 
varie funzioni e' identico, ma funzionano in modo diverso
 
E soprattutto non riesco a riprodurlo nel demo, e quindi mi sa che 
bisogna andarci giu' pesante coi ceri a sa Peppiniello
 
 

 varie funzioni e' identico, ma funzionano in modo diverso 
 
Hai seguito i consigli dei post precedenti?
 
E prima ancora:
1-  Hai reimportato il progretto in nuovo .Accdb?
2-  In alternativa, hai provato a copiare/incollare tutti gli Oggetti/Codice in nuova Form?
 
In passato ho incontrato situazioni simili in Forms su cui, nel tempo, avevo lavorato molto (cancellando e ricreando tanti oggetti).
Reimportando o ricreando ex novo la Form, tutto si sistemava.
Magari non è il caso tuo, ma almeno prova.
 
Saluti
 


Si, provato, il progetto principale viene esportato su singoli file di 
testo e reimportato periodicamente
Ma sfortunatamente, in questo caso, non influisce sul problema
 

 Ma sfortunatamente, in questo caso, non influisce sul problema
 
Secondo me se non provi a "smontarla" pezzo per pezzo non trovi l'inghippo.
 
Saluti


Veramente l'inghippo e' chiaro dipenda dalla chiamata della funzione 
Evidenzia() che avviene nel Form_Current
Se rem-mo quella riga lo sfarfallio scompare
Il vero problema e' capire il motivo per cui la chiamata alla funzione 
faccia sfarfallare a quel modo, e' come se il codice 'sentisse' la 
presenza del cursore (la freccina a video del mouse) sopra le righe del 
corpo, anche se non c'e' nessun evento destinato a sentire la posizione 
cursore
 
 
 

 Evidenzia() che avviene nel Form_Current 
 
Ok, s'è capito!!
Ma se nel Demo funziona e nell'orginale NO, è chiaro che *l'inghippo* esiste e sta da qualche altra parte.
Quindi, smontala a pezzi finchè non individui cosa infastidisce la formattazione condizionale (che poi sia migliorabile come ti fa notare Alex è un altro discorso).
 
Ma prima, ricrea la Form da zero e incollaci tutto quanto: non è la stessa cosa che reimportare in nuovo file e non credo tu l'abbia provato.
 
Saluti
 


E provata pure questa
La form nuova, con copiati dentro i controlli ed il codice, nel 
programma principale mostra il solito sfarfallamento
Copiata la form sul programma demo, non mostra anomalie
Credo che fra poco mi arrendo
 

 Credo che fra poco mi arrendo
 
E' no, adesso siamo curiosi pure noi di capire: l'arresa non è contemplata!
Dai, smontala un pezzetto per volta fino a che ... ne resterà soltanto uno (e continuerà a sfarfallare).
 
Saluti   ;-)


Veramente e' quello che ho fatto con la schermata demo
Ho tolto via tutto il superfluo
Schermata demo su programma demo NON appare problema
Schermata demo su programma completo sfarfalla
Essendo molto corposo il programma principale forse qualche modulo 
conterra' qualcosa che fa sfarfallare alcune form
Pure a me piace pensare che che l'arresa non sia comtemplata
Ma quando e' troppo e' troppo, non posso spendere giornate alla caccia 
di un problema che in effetti e' solamente estetico