Примерно так (на java было бы по-красивше, но можно делать и графическом режиме):
var
m : array[0..100] of string;
i,n,max : integer;
get : boolean;
s : string;
leftCmd,rightCmd,getCmd,okCmd,exitCmd,cmd : command;
id_txt : integer;
begin
showForm;
leftCmd := createCommand('left', CM_SCREEN, 1);
rightCmd := createCommand('right', CM_SCREEN, 2);
getCmd := createCommand('get', CM_OK, 1);
exitCmd := createCommand('exit', CM_EXIT, 1);
okCmd := createCommand('ok', CM_OK, 1);
addCommand(leftCmd);
addCommand(rightCmd);
addCommand(getCmd);
addCommand(exitCmd);
addCommand(okCmd);
repeat
//загрузка текста
m[0]:='RUS: программирование от arT (c). e-mail: [email protected]'+chr(10)+'________________'+chr(10)+'ENG: ';
m[1]:='arT';
m[2]:='programming';
m[3]:='by';
m[4]:='(c).';
m[5]:='e-mail:';
m[6]:='[email protected]';
max:=6;
n:=1;
get:=false;
//цикл выборки
repeat
s:='';
for i:=0 to max do
if (n<>i) then s:=s+m[i]+' '
else
if get then s:=s+'['+m[i]+'] '
else s:=s+'{'+m[i]+'} ';
id_txt := formAddString(s);
repeat
cmd := getClickedCommand;
until (cmd<>emptyCommand);
if (cmd=leftCmd) then
begin
if (n>1) then
begin
n:=n-1;
if get then begin s:=m[n+1]; m[n+1]:=m[n]; m[n]:=s; end;
end {else begin n:=max; if get then begin s:=m[1]; m[1]:=m[n]; m[n]:=s; end; end{};
end
else if (cmd=rightCmd) then
begin
if (n<max) then
begin
n:=n+1;
if get then begin s:=m[n-1]; m[n-1]:=m[n]; m[n]:=s; end;
end {else begin n:=1; if get then begin s:=m[max]; m[max]:=m[n]; m[n]:=s; end; end{};
end
else if (cmd=getCmd) then get:=not get;
formRemove(id_txt);
until (cmd=exitCmd) or (cmd=okCmd);
until (cmd=exitCmd);
end.