L'errore è ben evidente. La proprietà Pages del controllo TPageControl contiene le pagine in cui è stato suddiviso il controllo. Nel tuo codice, stai controllando se ciascuna pagina (rappresentata da un oggetto TTabSheet) è uguale a se stessa.
Ovviamente, la condizione restituisce sempre un valore vero, quindi non mi stupirei se ti si avviassero tutte le stampe una dopo l'altra!
Hai due modi per fare ciò che hai chiesto.
Controlli qual è la pagina attiva (selezionata) confrontando il "controllo pagina" stesso (TabSheet1, TabSheet2, ecc.) con la proprietà ActivePage del TPageControl che contiene il riferimento alla pagina TabSheet attiva.
codice:
if MyPageControl.ActivePage = MyTabSheet1 then
begin
// Stampo il report 1
end;
if MyPageControl.ActivePage = MyTabSheet2 then
begin
// Stampo il report 2
end;
La seconda possibilità (forse la più comoda nel tuo caso) consiste nel controllare l'indice numerico della pagina selezionata, che varia da un minimo di 0 (che corrisponde alla prima pagina) ad un massimo di {totale pagine - 1}. La proprietà che ti indica questo valore è ActivePageIndex.
codice:
case MyPageControl.ActivePageIndex of
0:
begin
// Stampo il report 1
end;
1:
begin
// Stampo il report 2
end;
end;
Ciao!