Bon ! OK.
Je n'ai peut être pas compris le problème de FONKOU.
Mais pour répondre à slimjoe sur l'utilisation d'un timer. C'est un vieux
truc qui résoud pas mal de problèmes.
Supposons que le traitement à faire soit très long. Cela peut gêner le
reste de l'application si il est placé dans l'événement OnShow ou
OnActivate car la fiche ne rendra pas la main tant que le traitement ne
sera pas terminé.
Deuxièmme cas : Si le traitement fait un appel à SetFocus (par exemple)
alors que la fiche n'est pas encore réellement active, il y aura plantage
puisque l'on ne peut pas placer le focus sur un WinControle si il n'est pas
visible.
Donc, placer le code du traitement en question dans un TTimer qui se
declanchera après un délai comander par l'événement OnShow ou
OnActivate va permetre à la fiche de terminer son activation ou son
affichage, avant que le traitement commence.
Ensuite, si dans le traitement il n'y a pas de code qui peu bloquer le
déroulement de l'application, le traitement se fera dans la procedure de
l'événement Timer, en temps masqué, et on poura faire autre chose pendant ce temps.
Comme je l'ai montré :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
procedure TForm2.FormShow(Sender : TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm2.Timer1Timer(Sender : TObject);
begin
Timer1.Enebled := False;
// Traitement
end; |
Il suffit de fixer un interval de 200 ms pour que ça marche. C'est un truc
que j'ai utilisé souvent.
Partager