Последние записи
- Как настроить адрес без указания на index.php?
- Чтение из Excel и валидация. Можно ли как-то ускорить данный процесс?
- Загрузить файл из папки с программой
- Компьютеры для бухгалтера и дизайнера. В чём разница?
- Удалить все повторения в строке
- Как в treeview узнать индекс узла по которому был click?
- Исходник программы «азбука Морзе»
- Рассылка. Выпуск 139
- Как в коснольном приложении открыть диалог сохранения?
- Поддержка drag and drop для Tlistview?
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.
Перейдите на форум за доолнительной помощью. В теме много полезного и интересного.

