Qual è il modo consigliato per garantire che la mainform sia completamente ingrandita e tutti i controlli vengano ridisegnati prima di mostrare un modulo modale sul primo caricamento dell'applicazione?Modo corretto per garantire che la forma principale sia ingrandita e completamente ridisegnata prima di mostrare un modulo modale sul carico dell'applicazione
Devo mostrare una finestra di dialogo modale all'avvio dell'applicazione (non una schermata di accesso) ma se imposto il modulo su wsMaximized
mentre lo schermo ingrandisce, i controlli non hanno la possibilità di ridisegnare e si rimane con un brutto pasticcio .
mi mostrano lo schermo modale attualmente utilizzando il seguente:
procedure TForm1.FormActivate(Sender: TObject);
var
frmOrderLookup:TfrmOrderLookup;
begin
onactivate := nil;
frmOrderLookup:=TfrmOrderLookup.Create(nil);
try
frmOrderLookup.showmodal;
finally
frmOrderLookup.Free;
end;
end;
+1. Se pubblichi il messaggio in "OnShow", invece, verrà elaborato più avanti nel processo; questo elimina ogni possibilità che venga inviato troppo presto. (E non dovrebbe essere 'FormCreate' invece?' OnCreate' è il nome della proprietà stessa.) –
@Ken: Grazie per la correzione. Per quanto riguarda l'uso di 'OnShow', penso che il modulo verrà creato, mostrato, quindi attivato tutto prima che' Application.Run' inizi a pompare la coda dei messaggi, quindi non ha molta importanza. Anche altre forme e datamodules stanno per essere creati (e hanno attivato anche i loro eventi "OnCreate"). Non ho ancora avuto questo idioma in pratica quando usato da "OnCreate". – afrazier
Grazie per il tuo aiuto - +1 a @KenWhite anche per la raccomandazione di OnShow –