* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 19, 2024, 08:48:04 am

Inserisci il nome utente, la password e la durata della sessione.

408 Visitatori, 1 Utente

Autore Topic: [RISOLTO] TForms: Problemi con Alt + Tab  (Letto 18149 volte)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #15 il: Aprile 16, 2013, 09:50:39 am »
Dalla versione 1.0.8 di Lazarus:
Codice: [Seleziona]
TKeyEvent = procedure(Sender: TObject; var Key: Word; Shift: TShiftState) of Object; 
....
procedure AddOnKeyDownBeforeHandler(Handler: TKeyEvent;AsFirst: Boolean=true); 
...
procedure TApplication.NotifyKeyDownBeforeHandler(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  i: Integer;
begin
  i:=FApplicationHandlers[ahtKeyDownBefore].Count;
  while FApplicationHandlers[ahtKeyDownBefore].NextDownIndex(i) do
    TKeyEvent(FApplicationHandlers[ahtKeyDownBefore][i])(Sender,Key,Shift);
end;

procedure TApplication.NotifyKeyDownHandler(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  i: Integer;
begin
  i := FApplicationHandlers[ahtKeyDownAfter].Count;
  while FApplicationHandlers[ahtKeyDownAfter].NextDownIndex(i) do
    TKeyEvent(FApplicationHandlers[ahtKeyDownAfter][i])(Sender, Key, Shift);
  if WidgetSet.IsHelpKey(Key, Shift) and
     (Widgetset.GetLCLCapability(lcLMHelpSupport) = LCL_CAPABILITY_NO) then
    ShowHelpForObject(Sender);
end;


Mi viene in mente di applicare un Handler di preprocess alla gestione dei tasti ... in prima battuta per mettere solo sotto controllo cosa passa effettivamente ai componenti "alti".
Per poi procedere alla comprensione su come interferire con il normale processo dei messaggi.

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

CortelliStefano

  • Newbie
  • *
  • Post: 37
  • Karma: +0/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #16 il: Aprile 16, 2013, 11:44:01 pm »
Ciao e grazie della risposta.

Hai per caso un semplice esempio di codice che potrei utilizzare per "mettere sotto controllo" il problema?

Ancora grazie, buona serata,

Stefano

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #17 il: Aprile 17, 2013, 11:33:29 am »
Non capisco di cosa tu abbia bisogno ...
Basta che tu metta un metodo che non faccia nulla che ti possa aiutare in ottica debug ....


Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

CortelliStefano

  • Newbie
  • *
  • Post: 37
  • Karma: +0/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #18 il: Luglio 03, 2013, 06:49:44 pm »
Un saluto a tutti,

purtroppo il problema è rimasto anche con la versione 1.0.10 di Lazarus. Il bug è ancora, ormai da un anno, in stato "assigned".  >:( E non lo vedo indicato neppure nella roadmap per la versione 1.2.

Purtroppo è la nona versione di Lazarus che presenta questo grave problema. Ho provato a postare anche sul forum ufficiale di Lazarus, ma per ora senza successo.

Nel frattempo ho semplificato al massimo il progetto di esempio, basato su un semplice DB SQLite, in modo che non richieda di installare nulla e posssa essere provato da chiunque.

Qualcuno potrebbe magari provare l'esempio allegato e riprodurre il problema? Almeno per circoscrivere meglio le piattaforme "affette".

Visto il perdurare del problema, se qualcuno avesse un'idea di come riuscirlo in qualche modo a bypassare, glene sarei estremamente grato.

Un grazie infinite per ogni possibile aiuto.

Un saluto a tutti,

Stefano

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #19 il: Luglio 13, 2013, 04:41:45 pm »
test fatto su ubuntu 13.04 con lazarus 1.0.8 e non funge.

Provato con virtualbox e winzoz e purtroppo la combinazione alt-tab mi cambia da macchina virtuale a reale, quindi non posso testarlo.

Qualche anima pia che ha winzoz e che fa una prova?
Ieri è passato, domani è futuro, oggi è un dono...

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #20 il: Luglio 13, 2013, 07:17:40 pm »
Ho provato io qualche tempo fa: a me sembra funzionare in modo corretto, anche  perché in windows Alt+Tab muove da un'applicazione all'altra, ed è esattamente quello che fa. Altri problemi non mi pare di riscontrarne (Lazarus 1.0.8 su Windows XP)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #21 il: Luglio 13, 2013, 09:03:56 pm »
In effetti su Seven ho notato che questo comportamento è presente.
Con la griglia non inserisce i dati.
Per ovviare questo inconveniente, io avevo optato per l'inserimento diretto via SQL ;)
Anche senza fare alt-tab, basta che la finestra perda il focus.
Non ho trovato un workaround ...
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

CortelliStefano

  • Newbie
  • *
  • Post: 37
  • Karma: +0/-0
Re:TForms: Problemi con Alt + Tab
« Risposta #22 il: Luglio 15, 2013, 11:22:50 pm »
Grazie mille a tutti per le risposte.

Purtroppo ho un progetto molto complesso che fa largo uso di componenti data-aware, DbGrid in primis, e non posso permettermi di riscrivere il codice...  :(

Spero davvero in un intervento dello staff di Lazarus, perché ancora non ho trovato nessun modo per bypassare il problema.

Quello che fatico a capire è come mai sembro essere stato l'unico ad avere evidenziato il problema, quando si tratta di un baco che affligge tutti i progetti multipiattaforma che fanno uso di DbGrid.

Sto tentando di lavorare sulla possibilità di settare la proprietà Visible = False della Form al deactivate, in modo che proprio "scompaia" dalla Taskbar (la proprietà ShowInTaskBar = stNever da sola non basta ad evitare il problema), ma dai primi test sembra che comunque l'Alt+Tab inneschi qualcosa che produce sempre il problema.

L'unica cosa che mi sembra di avere notato è che il problema si presenta solo quando la form viene coperta da un'altra form (sempre dello stesso progetto), mentre in caso di due piccole forms che non si sovrappongono, spontandosi con Alt+Tab il problema sembra non presentarsi.

Sembrano affette quindi le piattaforme Linux/GTK2 e Windows.

Con Linux/QT avevo provato ed il problema sembra non presentarsi, infatti la gestione delle finestre sotto QT è molto diversa, rimangono aperte senza che quelle in secondo piano vengano minimizzate come succede con le GTK2 o WIN32.

Purtroppo con le QT ho poi riscontrato altri bugs della DbGrid, questi bypassati tutti, ma molto gravi tali da suggerire di attendere una maturazione della DbGrid con le QT (del tipo che il Post sposta il record del dataset al primo record...).

Qualsiasi aiuto per potere trovare anche una (piccola) soluzione è sicuramente (molto) bene accetto!

Buona serata a tutti ed ancora grazie di avere provato l'esempio, ora almeno siamo in grado di circoscrivere meglio le piattaforme affette,

Stefano

CortelliStefano

  • Newbie
  • *
  • Post: 37
  • Karma: +0/-0
[RISOLTO] Re:TForms: Problemi con Alt + Tab
« Risposta #23 il: Settembre 24, 2013, 11:33:17 pm »
Un saluto a tutti. Bella, bellissima, notizia: oggi il problema è stato risolto dallo staff di Lazarus ed incluso nella r42924 della trunk.  :) :) :)

Un grande grazie in particolare a Jesus Reyes dello staff di Lazarus, che ha risolto il problema: allego la patch per chi (come me) volesse applicarla alla sua versione di Lazarus senza dovere necessariamente installare la svn/trunk.

La patch serve sotto GTk2, l'ho testata sotto Linux/GTK2 con Lazarus 1.0.10 e funziona perfettamente.

Per Windows, con l'interfaccia standard (win32) la patch non serve (il problema riguardava quindi solo la GTK2), ho testato la 1.0.12 di Lazarus (senza patch) su Windows XP, e tutto sembra funzionare correttamente.

In caso di GTK2 su altri sistemi (p.es. GTK2-Windows, ecc.) la patch è invece, presumbilmente, necessaria.

Un saluto a tutta la comunità,

Stefano
« Ultima modifica: Settembre 25, 2013, 11:48:05 am da CortelliStefano »

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:[RISOLTO] TForms: Problemi con Alt + Tab
« Risposta #24 il: Settembre 25, 2013, 04:05:31 pm »
Bene
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:[RISOLTO] TForms: Problemi con Alt + Tab
« Risposta #25 il: Settembre 25, 2013, 07:46:05 pm »
Finalmente :)
Ieri è passato, domani è futuro, oggi è un dono...

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18772
  • Topic in totale: 2233
  • Online Today: 578
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 408
Total: 409

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.