var I: Integer = 0; procedure TForm2.PageControl1Change(Sender: TObject); begin if (Sender is TPageControl) and (TPageControl(Sender).ActivePage = TabSheet2) then begin Inc(I); Label1.Caption := Format('Nombres de changements %d', [I]); end; end; procedure TForm2.Button1Click(Sender: TObject); begin PageControl1Change(PageControl1); end;
Bonsoir Cirec,
J'ai testé mais ne fonctionne pas :-(
Le but est de rafraîchir l'onglet déjà ouvert.
Peux-tu m'expliquer ton code?
(Sender is TPageControl)
(TPageControl(Sender).ActivePage = TabSheet2)alors le code est exécuté (ici un simple incrément de I avec affichage du résultat).
PageControl1Change(PageControl1)et si la page active correspond à TabSheet2 ... le code est exécuté.
PageControl1Change(nil)le code entrera bien dans la procédure OnChange du TPageControl mais n'exécutera pas le code puisque
(Sender <> TPageControl)et bien sur en procédant ainsi on peut réutiliser le même évènement OnChange pour un autre TPageControl
PageControl1Change(PageControl2)par Ex.
procedure TForm1.PageControl1Change(Sender: TObject); begin ShowMessage('PageControl1Change'); end; procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PageControl1Change(Sender); end;