Вот так (примерно без HiAsm-a и без проверки )
#pas
procedure THISwitchPages.SetCount;
begin
SetLength(onSelect, Value);
FOutCount := Value;
end;
procedure THISwitchPages._work_doSelect0; // для Visible
var i, n:integer;
val:cardinal;
begin
val := ReadInteger(_data,_data_Data,0);
n := 1 shl val;
for i := 0 to FOutCount-1 do begin
if ((n shr i) and 1) = 1 then
_hi_OnEvent(onSelect[i],1)
else
_hi_OnEvent(onSelect[i],0);
end;
end;
procedure THISwitchPages._work_doSelect1; // для doBringToFront
var i:integer;
begin
i:= ReadInteger(_data,_data_Data,0);
if(i >= 0)and(i< FOutCount) then
_hi_onEvent(onSelect[i]);
end;