Ho una Form in cui compillo una stringGrid da mostrare alla fine.
La Form diversi compoonenti, di cui la maggior parte sono distribuiti dentro quattro pannelli.
Nello strutturare l'insieme dei componenti, ho disegnato i vari componenti in momenti successivi.
L'ultimo componente disegnatoi è una StringGrdid. Essa viene resa visibile da codice dopo la sua compilazione. Per lasciarla alla vista ho inserito due pulsanti con la proprietà TabStop = True.
Ebbene, il pannello con la StringGrid compare per qualche istante e poi scompare, perchè viene eseguita automaticamente la procedura Click[/i che contiene l'istruzione Close del primo dei due pulsanti (TabOrder = 0).
procedure TForm9.BPulsNoAmmortClick(Sender: TObject);
begin
Close;
end;
]
Con l'istruzione Close, si chiude la Form ed il controllo ritorna alla chiamante.
E' la prima volta che mi succede una cosa del genere e non capisco perchè la proprietà TabStop NON funziona.
In ogni caso, se devi visualizzare o meno un componente grafico usa la sua proprietà "VISIBLE". Se il componente è un contenitore (come ad esempio un pannello) tutto ciò che è contenuto viene nascosto se la "VISIBLE" del contenitore è "FALSE".
No, il problema non è quello.
Io vorrei che , dopo la visualizzazione del Panel3 dentro cui si trova, compilata la StringGrid da controllare, il programma si fermazze in attesa della successiva scelkta dell'utente..
Nel Panel3, oltre la StringGrid sono presenti altri due pulsanti di cui il primo ha la proprietà TabStop= True e la proprietà TabOrder= 0. É il pulsante a cui cedo il focus:
Form9.Panel3.Visible:= True;
Sleep(200); // Attendi 200 millesecondi (= 1/5 di secondo)
Application.ProcessMessages;
Form9.BPulsNoAmmort.SetFocus;
Diversamente da quanto da me atteso, l'esecuzione del programma va avanti, come se fosse stato dato il click sul pulsante. Viene perciò scatenato l'evento BPulsNoStampClick, a torto, secondo me, e viene eseguito il codice contenuto nella procedura relativa:
procedure TForm9.BPulsNoAmmortClick(Sender: TObject);
begin
WriteLn('procedure TForm9.BPulsNoAmmortClick');
Close;
end;
La mia domanda, allora è: Come faccio a fermare l'esecuzione del programma subito dopo la presentazione alla vista del Panel3 con la StringGrid da leggere e controllare, prima di scegliere come proseguire?
Spero di essermi spiegato meglio ora.