I assume you have something done with gamestates

in your main loop

[pascal]case gamestate of:
gsMenu : displayMenu();
gsOptions : displayOptions():
gsGame : runGame();
gsGameOver : displayGameOverAnimation();
gsDisplayScoreList: displayScoreList();
gsEnterHighScore : displayHighScoreForm();
gsExit : cleanEveryThingUpAndThenExitGame();
end;[/pascal]

Now when the player has a sufficient score you can either send him to gsDisplayScore, gsEnterHighScore or gsMenu.


[pascal]

function getLowestScoreFromList():word;
begin
// get the lowest value from thescoreList,
end;


procedure TPlayer.Collsion;
begin
(...)

if (player.lives <= 0) then
begin
player.dead := true;
if (player.score = 0) then gamestate := displayGameOverAnimation
else (if player.score < getLowestScoreFromList() ) then displayScoreList()
else (if player.score > getLowestScoreFromList() ) then displayHighScoreForm()
end
else dec(player.lives)
end;

[/pascal]

I hope this helps a bit...