Difference between revisions of "OpenDocument"
From Lazarus wiki
Jump to navigationJump to search (→Description: Removed warning for Lazarus versions < 1.0.8) |
|||
Line 10: | Line 10: | ||
==Description== | ==Description== | ||
'''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. | '''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. | ||
− | |||
− | |||
==Example== | ==Example== |
Revision as of 19:05, 2 January 2020
Definition
Unit: Lazarus lclintf
function OpenDocument(APath: String): Boolean;
Official documentation: [1]
Description
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.
Example
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;