Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: petrusic - Maggio 20, 2025, 05:37:59 pm

Titolo: quale controllo parte per primo in una formx.showmodal?
Inserito da: petrusic - Maggio 20, 2025, 05:37:59 pm
Problema: La mia Form4, dopo regolare Create viene schedulata dall'istruzione
Codice: [Seleziona]
Form4.ShowModal; 

Ebbene, in base alla sequenza ordinata delle varie proprietà "TabOrder" ,  ho sempre immaginato che il primo controllo della Form4 ad essere svegliato, con la chiamata, fosse quello con TabOrder=0 e TabStop=True.

Quindi ho posto delle righe "WriteLn" come Trace mia.

Invece . . .: Assolutamente NO.

Ora non riesco, stando così le cose, ad intervenire per appoirtare le dovute correzioni.

Ho letto che si può attivaare la Trace di Lazarus. L'ho fatto una volta, ma non ci hi capito niente:

Come posso fare allora per intercettare la procedura che si attiva per prima?
Titolo: Re:quale controllo parte per primo in una formx.showmodal?
Inserito da: DragoRosso - Maggio 20, 2025, 05:47:22 pm
Cosa intendi con "essere svegliato" ?
TabOrder identifica la sequenza con cui il tasto TAB ti muove fra i controlli. Non ha nulla a che fare con quello a cui immagino ti riferisca cioè alla "generazione grafica" oppure a qualche sequenza specifica.

Non è dato sapere (e anche se lo fosse non ci si può basare su ciò) con che sequenza i controlli vengono creati o gli eventi stessi vengono generati durante la creazione o lo SHOW / ACTIVATE di un controllo grafico.

Di certo è che nell'evento FormCreate o nello Show hai tutta la tua Form e i tuoi controlli creati a designtime disponibili, ma non potrai mai fare affidamento all'ordine cui sono stati "creati".
Titolo: Re:quale controllo parte per primo in una formx.showmodal?
Inserito da: DragoRosso - Maggio 20, 2025, 05:58:42 pm
Come posso fare allora per intercettare la procedura che si attiva per prima?

Cosa intendi fare con quella procedura ? Magari c'è un modo diverso per farlo.

La procedura che viene generata per prima è l'evento OnCREATE della Form (ovviamente solo alla creazione).

Una volta creata la Form viene generato l'evento OnShow ogni qualvolta la Form viene visualizzata (con i metodi ShowModal o Show).

Poi ci sono altri eventi che vengono generati, così come si possono inserire delle istruzioni alla "prima" esecuzione dell'unità specifica.