Если хотите "параллельное" выполнение - то либо потоки, либо ПЕРЕД запуском процедуры RunRight(0) поставить запуск таймера с интервалом в 1мс:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Timer1.Interval:=1000;
Timer1.Enabled:=true;
LEdit4.Text:='15';
RunRight(0);
end;
...
procedure TForm1.Timer1onTimer(Sender: TObject);
var i:integer;
begin
i:=strtoint(LEdit4.Text)
dec(i);
if i<0 then
begin
Timer1.Enabled:=false;
exit;
end;
LEdit4.Text:=inttostr(i);
end;
Но лучше все равно RunRight() вызывать в отдельном потоке, чтобы программа не "висла".