Not sure if it is important but Flags should be of type SDL.UINT32 and not integer.

Here is the code I use:

Code:
procedure Platform_InitScreen(Width, Height : integer; UseFullScreen : boolean; Title : PChar);
var
  Flags : SDL.UINT32;
  Mode : PSDL_Surface;
begin
  if UseFullScreen then
  begin
    flags := SDL_OPENGL or SDL_FULLSCREEN;
    SDL_ShowCursor(0);
  end
  else
    flags := SDL_OPENGL or SDL_RESIZABLE;

  SDL_WM_SetCaption(Title, nil);

  SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );
  SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 );
  SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );
  SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
  SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );

  Mode := SDL_SetVideoMode(Width, Height, 0, flags);
  if (Mode = nil) then
    Halt(0);
end;