procedure SetActiveTab(PC: TsPageControl; PageNr: Integer);
var
Accept: Boolean;
begin
PC.OnChanging(PC, Accept);
if not Accept then Exit;
PC.ActivePageIndex := PageNr;
PC.OnChange(PC);
end;
Yes ofcurse, This procedure is simple to write but you have to remember about it. This is only for changing tabs programmatically. It is necessary to write one more for TabSheet.Free;