Merci les copains.
Cependant, deux mots d'explication (après m'être relevé, car je suis tombé par terre en lisant vos posts) :
je suis bêtement parti des explications du wiki où on voit bien que la ligne que tu veux me faire supprimer, Thierry, vient de là.
Et pourquoi j'ai "inventé" la déclaration de la variable dans l'unité de la Frame ?
parce que sinon, la mainform ne connait pas la procédure déclarée (même en "public") dans l'unité de la frame que j'aimerais voir appelée par le timer ;
et j'ai suivi ce chemin parce qu'après, l'autocomplétion le valide !
C'est quand même bizarre qu'il faille que je supprime une ligne présente dans le tuto et que je rajoute cette "var" absente lors de la création de l'unité (à la différence de la création d'une form) alors que l'inverse ne fonctionne pas.
Enfin, si, il existe une manière de faire fonctionner tout ça tout en restant conforme au tuto : c'est d'envoyer un message à la frame pour lui faire appeler la procédure plutôt que de vouloir l'appeler directement !
Dans la form :
et dans la frame (où j'ai commenté la ligne "var Frame1Frm: TFrame1Frm;") :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure Tmainform.MainTimerTimer(Sender: TObject); begin if mainform.Visible then begin MainTimer.Enabled := False; // frmFrame1.Frame1Frm.TestStringlist; // frmFrame1.TestStringlist; Frame1Frm.Perform(LM_FROMOFFICE, 1, 0); // +1 ! /!\ MainTimer.Enabled := True; end; end;
et là ça baigne aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TFrame1Frm.ReceptionDeMessages(var Msg: TLMessage); begin with TLMessage(Msg) do if (WParam = 1) then TestStringlist; end;
Je me suis (et je vous ai) bien pris la tête avec ces histoires de messages il y a qq jours mais, comme on dit, tout sert à tout, dans la vie
Partager