Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Вниз

Сворачивание в трей   Найти похожие ветки 

 
Xmen   (2008-05-20 14:10) [0]

Для этого использоваль такой код
const
WM_MYICONNOTIFY = WM_USER + 123;

 private
   { Private declarations }
   ShownOnce: Boolean;
 public
   { Public declarations }
   NowDate:string;
   procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
   procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
   procedure RestoreMainForm;
   procedure HideMainForm;
   procedure CreateTrayIcon(n:Integer);
   procedure DeleteTrayIcon(n:Integer);

 end;

var
 AgentForm: TAgentForm;

implementation

uses DM;

{$R *.dfm}

procedure TAgentForm.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of         // обработка обратных сообщений
WM_LBUTTONUP:  //по нажатию левой клавиши, WM_RBUTTONUP по правой
 begin
  GetCursorPos(p);
  SetForegroundWindow(Application.MainForm.Handle);
  PopupMenu1.Popup(P.X, P.Y);
 end;
WM_LBUTTONDBLCLK : RestoreItemClick(Self); //как Default
end;
end;

procedure TAgentForm.WMSYSCOMMAND(var msg: TMessage);
begin
inherited; //обработка минимизирвания окна, не сворачевается а скрывается
if (Msg.wParam=SC_MINIMIZE) then
 begin
   HideMainForm;
   CreateTrayIcon(1);
 end;
end;

procedure TAgentForm.HideMainForm;
begin
//при сокрытии окна
 Application.ShowMainForm := False;
 ShowWindow(Application.Handle, SW_HIDE);
 ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;

procedure TAgentForm.RestoreMainForm;
var i,j : Integer;
begin
 Application.ShowMainForm := True;
 ShowWindow(Application.Handle, SW_RESTORE);
 ShowWindow(Application.MainForm.Handle, SW_RESTORE);
 if not ShownOnce then
 begin
   for I := 0 to Application.MainForm.ComponentCount -1 do
     if Application.MainForm.Components[I] is TWinControl then
       with Application.MainForm.Components[I] as TWinControl do
         if Visible then
         begin
           ShowWindow(Handle, SW_SHOWDEFAULT);
           for J := 0 to ComponentCount -1 do
             if Components[J] is TWinControl then
               ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
         end;
   ShownOnce := True;
 end;

end;

procedure TAgentForm.CreateTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle; //HWND вашего окна (окна принимающего обратные сообщения)
  uID := 1;          // номер значка
  uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; //обрабатываемые флаги
  uCallBackMessage := WM_MYICONNOTIFY;
  hIcon := Application.Icon.Handle;   // то откуда сдергивается значек это может быть и ImageList и т.д.
  StrPCopy(szTip,"MyJobs Agent.");  // всплывающая строка, может быть любой string главное с нулевым окончанием
 end;
 Shell_NotifyIcon(NIM_ADD, @nidata);    // добавление значка
end;

procedure TAgentForm.DeleteTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle;
  uID := 1;
 end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);   // удаление значка
end;

procedure TAgentForm.RestoreItemClick(Sender: TObject);
begin
RestoreMainForm;
DeleteTrayIcon(1);             //если убрать ремарку то при показывании основного окна значек исчезает
end;

procedure TAgentForm.FormCreate(Sender: TObject);
begin
ShownOnce:= False;

end;

procedure TAgentForm.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TAgentForm.FormShow(Sender: TObject);
var x,y:Integer;
begin
x:= Screen.Width-260;
y:= Screen.Height-430;
Left := x;
Top := y;

end;

end.

форма сварачивется в трей и обратно, проблема в том как его автоматический сварачиват при запуске программы?


 
Elec3C ©   (2008-05-20 15:08) [1]

Вот проблема а! В обработчике OnFormActivate(можно в OnFormShow) пропиши:

HideMainForm;
CreateTrayIcon(1);


P.S. Наверное, скопипастил и не изучал код вообще:\


 
Palladin ©   (2008-05-20 15:10) [2]


>  В обработчике OnFormActivate

жестокий ты парень...


 
Rouse_ ©   (2008-05-20 15:25) [3]


> OnFormActivate

Следующий вопрос будет: как выковырять форму из трея? :)


 
Xmen   (2008-05-20 16:49) [4]

Да нет сейчась меня волнует вопрос как можно сделать форму поверх всех окон. BringToFront - только один раз его помешает а мне надо сделать, чтобы он всегда был на верху.


 
{RASkov} ©   (2008-05-20 16:52) [5]

> [4] Xmen   (20.05.08 16:49)

StayOnTop


 
{RASkov} ©   (2008-05-20 16:52) [6]

FormStyle=fsStayOnTop ^)


 
Сергей М. ©   (2008-05-20 17:09) [7]


> проблема в том как его автоматический сварачиват при запуске
> программы


А нафига ее "сворачивать", если ее можно просто не показывать при старте ?

ShowMainForm := False; в файле проекта - и вуаля !)


> мне надо сделать, чтобы он всегда был на верху


Экие нескромные у тебя желания)

А ежели какой-нить Ymen, изобретатель аналогичной по амбициям программы, возжелает того же самого ? Как будете с ним этот самы "поверх" делить ?

Сверху всегда кто-то один, но смена позиции партнеров законом не запрещена)


 
Сергей М. ©   (2008-05-20 17:10) [8]


> как выковырять форму из трея?


Выпуздырить ?)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
15-1209988486
БарЛог
2008-05-05 15:54
2008.06.15
Где хранить "корзину" в интернет-магазине?


3-1199633981
Wolf
2008-01-06 18:39
2008.06.15
Подскажите как проверить SQL запросом существует ли


2-1211544521
Vladi78
2008-05-23 16:08
2008.06.15
Передача объектов по TCP/IP


15-1209808656
Andy BitOff
2008-05-03 13:57
2008.06.15
BSOD — ndis.sys


15-1209529452
@!!ex
2008-04-30 08:24
2008.06.15
Как испоганить исходник??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский