Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2008, 16:58   #1
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию Трей и меню

Помогите пожалуйста. Как сделать чтобы по нижатии кнопки "Закрыть", программа свертывалась в трей, и чтобы с трея по нажатии правой кнопки мыши всплывало меню?
____________________

Только можете объяснить поотдельности?
т.е. свертывание программы, и вызов ее меню. )
Патрон вне форума Ответить с цитированием
Старый 11.03.2008, 17:40   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Да и без гугла на форуме про трей уже много раз темы подымали.
Обработчик на событие onClose
пыщь
JTG вне форума Ответить с цитированием
Старый 11.03.2008, 19:30   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. В любом случае вам необходимо обрабатывать событие onCloseQuery
присваивая передающемуся ему флагу CanClose значение false в случае если эта функция не вызвана из меню трея (если конечно необходимо сохранить возможность корректного завершения программы)
после присвоения флагу соответствующего значения вы уже можете смело сворачивать программу в трей. Как же сделать последнее много кратно и подробно рассматривалось на нашем форуме, в чем вы можете убедиться, воспользовавшись поиском.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 11.03.2008, 19:48   #4
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

Код:
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics,ExtCtrls, Spin, Buttons,
StdCtrls, Mask, Controls, Forms, Dialogs,shellapi, Menus;


type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure WinManager(Sender: TObject);
    procedure Gototray;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure myWin(var message:Tmessage);message WM_USER+1;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  nf:TnotifyIcondata;
implementation

uses Unit2;

{$R *.dfm}


procedure Tform1.myWin(var message:Tmessage);
var
pt:Tpoint;
begin
case message.LParam of
WM_RBUTTONUP: begin
setForegroundwindow(handle);
getcursorpos(pt);
popupmenu1.Popup(pt.X,pt.Y);
end;
wm_LButtonDblClk:begin
showwindow(handle,SW_SHOW);
n1.Caption:='Свернуть';
end;
end;
end;

procedure tform1.WinManager(Sender: TObject);
begin
showwindow(application.handle,SW_HIDE);
n1.Caption:='Открыть';
end;

procedure TForm1.gototray;
begin
with nf do
begin
cbSize:=SizeOf(TNotifyIconData);
Wnd:=Handle;
uID:=13;
uFlags:=NIF_MESSAGE + NIF_ICON + NIF_TIP;
szTip:='Ozi Clocker v1.0';
hIcon:=Application.Icon.Handle;
uCallBackMessage:=WM_USER + 1;
end;
shell_notifyIcon( Nim_ADD,@nf);
end;

procedure TForm1.N2Click(Sender: TObject);
begin
application.Terminate;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMinimize:=Winmanager;
gototray;
end;


procedure TForm1.N1Click(Sender: TObject);
begin
if n1.Caption='Открыть' then
begin
  n1.Caption:='Свернуть';
  ShowWindow(handle,SW_SHOW);
end else if n1.caption='Свернуть' then
begin
  n1.Caption:='Открыть';
  ShowWindow(handle,SW_HIDE);
end;
end;
end.
вот пример для тебя написал
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 11.03.2008, 21:41   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Советую использовать RXLib. Там как раз то что Вы спросили делается очень просто и без какого либо большого кода.
FaTaL вне форума Ответить с цитированием
Старый 12.03.2008, 08:03   #6
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

vitalik007, спасибо за код.
Но почти на каждой строке вылезает ошибка.
Может есть другой способ?

Последний раз редактировалось Патрон; 12.03.2008 в 08:37.
Патрон вне форума Ответить с цитированием
Старый 12.03.2008, 13:14   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Другой способ уже назвали - использовать компонент.
Насчет способа с WinAPI, не нужно быть таким ленивым, эта задача тривиальная, возникает рано или поздно практически у каждого программиста, поэтому информации полно как на этом форуме так и статей в сети.
Фразы для поиска:
Сворачивание в трей
Сворачивание в трей WinAPI
Сворачивание в трей Delphi
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 12.03.2008, 13:23   #8
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Trey.doc
Вот статья (не мной написанная, а с инета слита), надеюсь поможет.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 12.03.2008, 17:28   #9
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

Всем большое спасибо
Патрон вне форума Ответить с цитированием
Старый 12.03.2008, 17:31   #10
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

SunKnight, спасибо за статью, очень умная, много нового для себя извлек.
Патрон вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
трей и панель задач DeDoK Общие вопросы Delphi 4 17.05.2008 20:18
Как свернуть прогу в трей Ярослав Помощь студентам 1 16.12.2007 06:27
Свертывание в трей AlphA Общие вопросы Delphi 10 12.11.2007 13:01
Трей и шатдаун oLMeR Общие вопросы Delphi 1 04.12.2006 14:41