Ah OK, je zoet een "one-instance" methode!
Optie 1 - UniqueInstance Component
Ik zag daar iets voor, ah gevonden! Kijk hier eens: Lazarus Wiki UniqueInstance
Je kunt het hier downloaden, of gebruik de attachment.
Voor zover ik kan zien moet je uniqueinstance_package.lpk openen vanuit Lazarus met "File" - "Open", dan op "Open Package" klikken, "Compile" en dan "Use" (als ik me niet vergis). Lazarus kan dan hercompileren, waarna dit als component beschikbaar zou moeten zijn.
Geen idee hoe "soepel" dit gaat lopen (zie ook Forum discussie).
Optie 2 - LSRunOnce demo
Ik vond hier ook nog een demo voor een alternatieve methode.
Je moet een TTimer op de form zetten en die de naam "RunOnceMonitorTimer" geven.
unit MainFrm;
{$mode objfpc}{$H+}
interface
uses
Forms, StdCtrls, ExtCtrls;
type
{ TMainForm }
TMainForm = class(TForm)
InfoLabel: TLabel;
RunOnceMonitorTimer: TTimer;
procedure RunOnceMonitorTimerTimer(Sender: TObject);
end;
const
CMyAppAtom = 'myapp';
var
MainForm: TMainForm;
FirstStart: Boolean = True;
implementation
{$R *.lfm}
uses
LSUtils;
{ TMainForm }
procedure TMainForm.RunOnceMonitorTimerTimer(Sender: TObject);
begin
if LSGlobalFindAtom(CMyAppAtom) then
begin
LSGlobalDeleteAtom(CMyAppAtom);
if not FirstStart then
begin
if WindowState = wsMinimized then
Application.Restore
else
BringToFront;
end;
FirstStart := False;
end;
end;
end.
Optie 3 - Probeer Delphi code (omdat je toch onder Windows werkt)
Verder vond ik nog een voorbeeld in Delphi die zomaar ook onder Lazarus zou kunnen werken, met meer detail en uitleg: link naar About.com.
Ik kan ze helaas geen van allen testen omdat ik even geen Windows ter beschikking heb en de Mac start standard alleen maar 1x de applicatie op.