Il giorno lunedì 5 marzo 2012 13:13:51 UTC+1, iaio ha scritto:
> Buongiorno a tutti,
>
> sto avendo un'anomalia che non riesco a spiegarmi e soprattutto a
> risolvere.
> Sul mio form principale (chiamato FrmMain e settato come sMDIForm) ho
> inserito un tasto col quale avvio una form modale:
>
> procedure TFrmMain.VenditaClick(Sender: TObject);
> begin
> FrmVendita := TFrmVendita.Create(nil);
> FrmVendita.ShowModal;
> FrmVendita.Free;
> end;
[...]
> Ora non capisco perchè al termine del tutto il FrmMain si "riattiva".
> Talvolta addirittura mi ritrovo il FrmMain sopra il FrmVendita. Altre
> volte invece no, rimane sotto ma tutti i controlli sono nuovamente
> attivi (ma chi gliel'ha detto?!? FrmVendita è modale, non dovrebbe
ciao.
Secoli fa ricordo di aver avuto un problema simile. Il problema era
provocato da una modifica introdotta da windows XP che creava problemi
usando delphi 5 (tanto per dire quanto tempo fa era!!! :) non so se
nelle versioni successive di delphi il problema e' stato risolto...
Per dirla in modo breve e impreciso, il problema era legato al fatto che
se ci mette troppo a eseguire il codice prima del ShowModal(), windows considera la tua finestra principale come bloccata e quindi quando crea
la form modale in realta' non la crea come modale: ecco perche finisce
dietro e la form principale resta attiva.
Nel nostro caso il problema era nell'OnCreate della form modale che
era troppo lento. Spostando il codice da OnCreate a OnActivate abbiamo
ridotto il tempo tra il click e il ShowModal eliminando il problema.
ciao
Giacomo