30th
Авг

RxTrayIcon

Posted by bullvinkle under Топик-обзор

Есть форма. На ней RxTrayIcon. В событии формы FormCloseQuery прописано:

Form1.Hide;
CanClose := False;

Тоесть при нажатии на крестик, приложение не закрывается а сворачивается в трей. Потом по щелчку на иконку в трее приложение восстанавливается. Но если снова нажать на крестик никаких событий не происходит. Также после закрытия приложения полностью, в трее остается иконка до тех пор пока на нее не навести курсор, после чего она исчезает. Кк можно решить эти проблемы?

Вот схема, которая работает.

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RXShell, StdCtrls;

type
  TForm1 = class(TForm)
    Tray1: TRxTrayIcon;
    Button1: TButton;
    procedure Tray1Click(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);  //OnClick TRxTrayIcon в Object Inspector
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button1Click(Sender: TObject);
  private
    FullClose : Boolean;
    procedure ApplicationRestore(Sender : TObject);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Tray1Click(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then begin
    Application.Restore;
    Application.BringToFront;
    Show;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnRestore := ApplicationRestore;
end;

procedure TForm1.ApplicationRestore(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_RESTORE);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if FullClose then CanClose := True
  else begin
    CanClose := False;
    ShowWindow(Application.Handle, SW_HIDE);
    Hide;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject); //закрыть приложение
begin
  FullClose := True;
  Close;
end;

end.

Перейдите на форум за доолнительной помощью. В теме много полезного и интересного.

Похожие статьи