Bonjour à tous,
Afin de rendre mon application plus réactive et moins gourmande, seule ma Main Form et mon Datamodule sont créés au lancement de l'application, toutes les autres Forms sont créées dynamiquement et libérées quand plus utilisées.
Je procède de la manière suivante :
Ici, une From F_Kw_Mod est créée (et libérée à sa fermeture) depuis une autre Form (F_Keywords) elle même précédement créée dynamiquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TfrmKeywords.BtNewKwClick(Sender: TObject); var F_Kw_Mod : TfrmKwMod; begin F_Kw_Mod := TfrmKwMod.Create(nil); try F_Kw_Mod.ShowModal; finally F_Kw_Mod.Free; end; end;
Cette Form (F_Kw_Mod) contient un TEdit et un Tbutton, pour la saisie de nouveaux enregistrements. Le click du bouton déclenche une série de vérifications (champ vide, doublon...) avant validation, enregistrement en base de données et fermeture de la Form.
Mon problème est le suivant : après un enregistrement réussi, je veux forcer le recalcule du nombre d'enregistrements dans un footer de ma DBGrid sur la Form précédente. Bien sur, je pourrais ajouter
juste avant l'appel de
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBGridEh1.SumList.RecalcAll;
et cela fonctionnerait (je l'ai testé).
Code : Sélectionner tout - Visualiser dans une fenêtre à part F_Kw_Mod.Free;
Ce que je voudrais savoir c'est comment accéder depuis ma seconde Form (créée dynamiquement) à un composant de la Form précédent (elle aussi créée dynamiquement) ?
Quand je tente d'y faire référence directement, j'ai droit à une belle "Application Exception" parce que je fais référence à "nil".
Alors savez-vous comment "partager" un composant et lui envoyer une commande depuis une autre Form en gardant à l'esprit (je sais que je me répète) qu'elles ont toutes les deux été créées dynamiquement (le simple ajout de l'unité à la use clause n'y change rien) ?
Merci d'avance
Math
Partager