Evénement onShow et onActivate d'une form
Bonjour,
Je suis sous Fedora 16 64bits et j'utilisais depuis un certain temps une application développée sous Lazarus qui fonctionnait correctement sous Lazarus 0.9.31. Et voilà, problème.
Je m'explique : j'ai écrit une application de gestion de données avec Sqlite ; je démarre une fiche principale et j'appelle d'autres fiches selon l'opération à réaliser par appui sur un bouton qui appelle l'autre fiche par ****.show comme ci-dessous :
Code:
1 2 3 4 5 6
| procedure TFslcl.BArchiverClick(Sender: TObject);
begin
// archivage des données supérieures à 300 jours et validées
if MTRANSFERT=False then TransfertPossible;
Farchiver.Show;
end; |
Dans cette nouvelle fiche archiver, j'ouvre une base avec un filtre concernant la date du jour - 300 et un autre élément du filtre une variable à oui voir ci-dessous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| procedure TFarchiver.FormShow(Sender: TObject);
begin
// affichage des données archivables
GridBank.Visible:=False;
MVERIFIE:='OUI';
MCODEDATE:=FloatToStr(Date()-300);
Q1:=quotedstr(MCODEDATE);
Q2:=quotedstr(MVERIFIE);
data.bank.Close;
MQ:='Select * from BANK WHERE CODEDATE< ('+Q1+') AND VERIFIE= ('+Q2+')';
data.bank.SQL:=MQ;
data.bank.Open;
data.bank.ExecSQL;
ENb.Text:=IntToStr(data.bank.RecordCount);
ENb.Update;
if data.bank.RecordCount=0 then
begin
MMESSAGE:='Pas de données à archiver';
MessageInformation;
Close;
end
else BValider.Enabled:=True;
end; |
Puis ensuite je lance une boucle de traitement des données sélectionnées où je copie l'enregistrement dans une table d'archivage et j'efface l'enregistrement dans bank.
Le problème est que j'utilisais l'événement FormShow pour lancer l'affichage filtré au moment de l'affichage de la fiche.
Mon filtrage ne fonctionne plus et mon application recopie tous les éléments et vide donc ma table bank.
Cherchant à résoudre le problème, j'ai fait du pas à pas en modifiant mon application et je constate que l'événement FormShow est activé dès le lancement de mon application.
J'ai voulu remplacer FormShow par FormActivate mas je n'ai pas trouvé sur le Web en français l'explication de leur différence et leur usage.
Donc je trouve étrange d'avoir ce problème aujourd'hui et de ne pas trouver d'explication sur la différence entre ces 2 événements. L'ancien wiki avec des explications de programmation semble avoir disparu, ou bien je suis aveugle.
Merci d'avance pour une petite aide.