Unit: Lazarus lclintf
function OpenDocument(APath: String): Boolean;
Official documentation: 
opendocument opens a document/file with the default viewer/editor registered with the operating system for that file/file extension. E.g. on Windows, the code will use the registry to look up the file association for the extension.
uses ... lclintf ... OpenDocument('readme.pdf');
Win NT "File names with spaces" workaround
The following is a simple function you can experiment with to do a similar job for file names with spaces. It is derived directly from OpenURL in <your lazarus install>\lcl\include\sysenvapis_win.inc, and has variations for wince and win9x removed - if you need those, see the original file. Experiment with is emphasised - it has only been tested for my particular use-case on windows 7. It does not seem to need the filename quoted.
uses windows; function OpenFileDoc(Doc: String): Boolean; var ws: WideString; begin Result := False; if Doc = '' then Exit; ws := UTF8Decode(doc); Result := ShellExecuteW(0, 'open', PWideChar(ws), nil, nil, SW_SHOWNORMAL) > 32; end;