Forum > LCL

[RISOLTO] TForms: Problemi con Alt + Tab

<< < (2/6) > >>

nomorelogic:
il problema è quindi relativo ai 2 diversi modi di tornare nel form
bisognerebbe sapere cosa (caspita) c'è di diverso nelle 2 modalità...

hai provato con

--- Codice: ---
DbGrid1.EndUpdate(TRUE);
--- Termina codice ---
messo in OnDeactivate del form ad esempio?

CortelliStefano:
Sì, il problema sembra proprio relativo al come ci si sposta tra le foms, e solo ritornando sulla form con Alt+Tab si verifica. Per questo pensavo che fosse un bug di TForms.


--- Citazione ---hai provato con

DbGrid1.EndUpdate(TRUE);

--- Termina citazione ---

Ho provato velocemente, a la griglia perde la visualizzazione, rimane la scrollbar verticale, ma senza le celle visualizzate.

Magari riprovo a fare qualche tentativo in più, ho anche provato a fare un DisabledControl e poi l'EnabledControl sul Deactivate, senza risolvere nulla.

Se hai qualche consiglio, anche tenativi da poter fare, ti ringrazio davvero molto, perché non riesco a venirne a capo (ed è la quarta versione consecutiva di Lazarus con lo stesso problema... solo che inizialmente pensavo riguardasse solo la DbGrid, ed avevo segnalato il bug http://bugs.freepascal.org/view.php?id=19993, ma adesso direi che invece sia un problema (anche) di TForms).

Ciao e ancora grazie,

Stefano

nomorelogic:
visto che hai più versioni di lazarus tra le mani...
Potresti comparare i sorgenti di TCustomForm tra la versione funzionante e quella che non va, magari sul metodo OnActivate ci sono delle differenze.
Se così non fosse bisognerebbe andare all'indietro nella gerarchia: se dipende dalla versione di lazarus da qualche parte una difference ci dovrà pur essere.
So che non è una cosa facile e ci vuole tempo ma se alla tua segnalazione non risponde nessuno...

ciao

CortelliStefano:
Grazie della risposta, al momento ho provato a postare il problema nel forum ufficiale:
http://lazarus.freepascal.org/index.php/topic,18085.0.html

Spero che qualcuno possa darmi una mano.

Nel frattempo ho identificato meglio il problema, che probabilmente va a sommarsi ad alcuni problemi della DbGrid, sempre dalla versione 0.9.30.

In pratica:
-a) La DbGrid perde il focus quando dalla griglia ci si muove nel dataset (pure con i controlli disabilitati), ad esempio per aggiornare i totali;
-b) Per bypassare questo problema avevo aggiunto un SetFocus nell'evento KeyDown in caso di tasti di spostamento;
-c) Questo SetFocus, a prescindere dallo spostarsi o meno nel dataset, crea problemi con l'Alt+Tab;
-d) Se tolgo il SetFocus si risovono i problemi con l'Alt+Tab se non ci si sposta nel dataset;
-e) Anche senza il SetFocus comunque, in caso di navigazione nel dataset (p.es. per calcolo totali), il problema con Alt+Tab si ripropone;
-f) Il problema sembra riguardare i campi Currency: se dopo l'Alt+Tab si va su un campo testo, sembra funzionare fintanto che non ci si posiziona su un campo Currency dove compare il problema e, una volta comparso, rimane anche sui campi di testo;
-g) Il problema sembra risolversi spostandosi di form con la TaskBar e ritornando sempre con la TaskBar.

Qualcuno ha modo di riscontrare il problema e capire se riguarda solo Linux con le GTK2 o più in generali tutte le situazioni?

Con Lazarus 0.9.28.2 funzionava tutto perfettamente che era una meraviglia...

Nel frattempo una soluzione per bypassare il problema sembra essere:
-Fare un Post al Deactivate, oppure spostare il focus (e magari memorizzare il campo, da reimpostare come Self.ActiveControl all'Activate) per risolvere i problemi dei DbEdit;
-Per la DbGrid, spostare tutti i codici che implicano lo spostarsi tra i record del dataset attivati nell'evento KeyDown: questo può essere fatto utilizzando gli eventi del DataSet (p.es. AfterPost), memorizzando i dati da utilizzare (al bisogno) nell'evento KeyDown, p.es. per visualizzare a richiesta un totale, in modo da non dovere mai navigare nel dataset dal KeyDown.

Per il momento altre soluzioni non ne vedo.

Nel forum ufficiale ho anche postato un progetto test di esempio, che tuttavia richiede Firebird (anche se potrebbe essere facilmente adattato ad altre basi dati).

Ogni aiuto o impressione al riguardo è chiaramente sempre bene accetto.

Un saluto a tutto il forum,

Stefano

Stilgar:
Ciao Stefano,
 dal tuo post sembra che il currency venga gestito in "malo modo".
Hai provato a cambiare il formato del dato in "double" ... o in ogni caso in virgola mobile (impostando a 4 i numeri decimali come precisione).
Se è veramente il currency e non la virgola mobile (il testo non ha virgola, quindi non possiamo escludere i dati numerici a priori), dovrebbe essere un work around accettabile. In ogni caso oltre la quarta cifra decimale non fanno menneno transazioni internazionali ;) Quindi sei abbondantemente sopra le richieste minime di sistema .... :D

Navigazione

[0] Indice dei post

[#] Pagina successiva

[*] Pagina precedente

Vai alla versione completa