Solved

minimize to tray

Posted on 2009-04-12
2
1,188 Views
Last Modified: 2012-06-27
I am trying to make my application run only in the system tray.  I have it set to hide when minimized but it only works once.  The hide seems to have no effect the second time.

I am using the trayicon component and applicationevents component of Delphi 2009 running on WindowsVista
procedure Ttcau.ApplicationEvents1Minimize(Sender: TObject);

begin

  hide;

end;
 

procedure Ttcau.ApplicationEvents1Restore(Sender: TObject);

begin

  show;

  bringtofront;

end;
 

procedure Ttcau.TrayIcon1DblClick(Sender: TObject);

begin

 if visible then

   begin

     application.Minimize;

     hide;

   end

     else

    begin

      application.Restore;

      show;

      application.bringtofront;

    end;

 end;

Open in new window

0
Comment
Question by:DSOM
2 Comments
 
LVL 36

Accepted Solution

by:
Geert Gruwez earned 500 total points
ID: 24128084
you'll need to remember the state of the application too in a separate variable
there is different places the form can be hidden or closed ...

this adds a menu option to the TrayIcon1 to close the application

Hitting the close button of the form, minimizes it to the tray
type

  TForm1 = class(TForm)

    TrayIcon1: TTrayIcon;

    PopupMenu1: TPopupMenu;

    popCloseApplication1: TMenuItem;

    procedure TrayIcon1DblClick(Sender: TObject);

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure popCloseApplication1Click(Sender: TObject);

  private

    fAppVisible: Boolean;    

    fAppClosing: Boolean;

  public

    constructor Create(AOwner: TComponent); override;

  end;
 

constructor TForm1.Create(AOwner: TComponent);

begin

  inherited Create(AOwner);

  fAppVisible := True;

  fAppClosing := True;

end;
 

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

  CanClose := fAppClosing;

  if not CanClose then

  begin

    Hide;

    fAppVisible := False;

  end;

end;
 

procedure TForm1.TrayIcon1DblClick(Sender: TObject);

begin

  if not fAppVisible then

  begin

    Self.Show;

    Self.BringToFront;

  end else

  begin

    Self.Hide;

  end;

  fAppVisible := not fAppVisible;

end;
 

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

  CanClose := fAppClosing;

  if not CanClose then

  begin

    Hide;

    fAppVisible := False;

  end;

end;
 

procedure TForm1.popCloseApplication1Click(Sender: TObject);

begin

  fAppClosing := True;

  Close;

end;

Open in new window

0
 

Author Closing Comment

by:DSOM
ID: 31569393
It worked except I needed to change:

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fAppVisible := True;
  fAppClosing := False;
end;

Thank you very much!
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now