Forum > Generale

[Risolto] pannello con stringgrid e due pulsanti si attiva, ma sparisce subito

(1/2) > >>

petrusic:
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).

--- Codice: ---
procedure TForm9.BPulsNoAmmortClick(Sender: TObject);
begin
  Close;
end;               

--- Termina codice ---
]

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.

DragoRosso:
Non ho compreso bene.

Comunque: la TABSTOP non impedisce al controllo di essere utilizzato, istruisce solo l'interfaccia ad usare o meno il tasto TAB su quell'elemento .... ovvero se premendo il tasto TAB posso o meno accedere al componente.
Nulla ha a che fare con eventi o chiusure.

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".

petrusic:

--- Citazione da: DragoRosso - Aprile 09, 2024, 10:10:21 pm ---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".

--- Termina citazione ---
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:

--- Codice: ---
  Form9.Panel3.Visible:= True;
  Sleep(200);     // Attendi 200 millesecondi (= 1/5 di secondo)
  Application.ProcessMessages;
  Form9.BPulsNoAmmort.SetFocus;           

--- Termina codice ---

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:

--- Codice: ---
procedure TForm9.BPulsNoAmmortClick(Sender: TObject);
begin
  WriteLn('procedure TForm9.BPulsNoAmmortClick');
  Close;
end;

--- Termina codice ---


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.

nomorelogic:
la form con Panel3 e la StringGrid può diventare modale?

Oppure potresti mettere la stringgrid da controllare in una form modale lanciata per l'occasione?

petrusic:

--- Citazione da: nomorelogic - Aprile 10, 2024, 05:53:55 pm ---la form con Panel3 e la StringGrid può diventare modale?

--- Termina citazione ---
Panel3 fa parte della Form9 che viene avviata  come modale. Al momento dell'avvio viene esposto il Panel1,


--- Citazione da: nomorelogic ---Oppure potresti mettere la stringgrid da controllare in una form modale lanciata per l'occasione?

--- Termina citazione ---
Avevo fatto così inizialmente, ma poi ho preferito mantenere la StringGrid nella Form9, per via di un'array che viene caricato nella Form9, ma che va esposto in visione nella StringGrid del Panel3.

Temo però che dovrò fare marcia indietro, accettando il tuo ultimo suggerimento perchè gli inconvenienti non viaggiano mai da soli, infatti ho anche difficoltà a posizionare il Panel3, a partire dal vertice superiore sinistro della Form9.  :o

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa