Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

System Tray и Список последних файлов [D2005, XP]


..::KraN::.. ©   (2007-04-14 16:03:00) 

Добрый день, Мастера. У меня 2 вопроса:
1. Как показывать меню при клике на иконке в системном трее?
2. Как можно сделать список последних открытых файлов в программе?


..::KraN::..   (2007-04-15 11:55:00) [1]


> Virgo_Style

Огромное спасибо!!!!!!!!!!!!!!!


Virgo_Style   (2007-04-14 20:38:00) [2]

-=MaxDelphi=-   (14.04.07 20:21) [5]
Ну ладно.. Не образец для подражания, но для начала сойдет...

procedure TForm1.FormCreate(Sender: TObject);
begin
 try
   LOFList.Items.LoadFromFile('c:\LOFList.txt');
 except
   on E:Exception do ShowMessage(E.Message);
 end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 try
   LOFList.Items.SaveToFile('c:\LOFList.txt');
 except
   on E:Exception do ShowMessage(E.Message);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
   OpenFile(OpenDialog1.FileName);
end;

procedure TForm1.AddToLOFList(FileName:String);
var i:integer;
begin
 i:=LOFList.Items.IndexOf(FileName);
 if i<0 then begin // нету в списке
   LOFList.Items.Insert(0,FileName);
   for i:=LOFList.Items.Count-1 downto 9 do
     LOFList.Items.Delete(i);
 end else //передвинем в начало
   LOFList.Items.Move(i,0);
end;

procedure TForm1.OpenFile(FileName: String);
begin
 //некие действия по открытию файла
 AddToLOFList(FileName);
end;


-=MaxDelphi=-   (2007-04-14 20:21:00) [3]


> Virgo_Style

А вы напишете, может пойму, я же не придурок!


Virgo_Style   (2007-04-14 20:11:00) [4]

-=MaxDelphi=-   (14.04.07 19:49) [3]
Могу. но зачем он тебе, если ты ничего не понимаешь, и зачем оно мне надо?


-=MaxDelphi=-   (2007-04-14 19:49:00) [5]


> Virgo_Style

А код можете написать, а то я ничего в Delphi не понимаю :((((((


Virgo_Style   (2007-04-14 16:26:00) [6]

..::KraN::..   (14.04.07 16:03)
2. Никакого волшебства: считал список при запуске, дополнил при открытии, сохранил при выходе.


Romm   (2007-04-14 16:08:00) [7]

1.
Многие программы показывают Pop-Up меню при щелчке на их иконке, помещенной на Tray, как этого добиться?

Вы должны обрабатывать сообщение, указанное вами при добавлении иконки на Tray. При значении (UINT)lParam, равном WM_RBUTTONDOWN (это обычно для Pop-Up меню по правой кнопке), или любому другому необходимому вам, вы должны вызовом функции GetCursorPos() получить позицию курсора в момент события (вряд ли пользователь успеет убрать мышь за время обработки сообщения, особенно если он ожидает меню), получить вескриптор Pop-Up меню одним из многих способов (LoadMenu(), GetSubMenu(), CreateMenu(), и т.д.) и выполнить следующий код:

SetForegroundWindow(hWnd);
TrackPopupMenuEx(hMenu, TPM_HORIZONTAL | TPM_LEFTALIGN, x, y, hWnd, NULL);
DestroyMenu(hMenu);
PostMessage(hWnd, WM_USER, 0, 0);


где:

hWnd
дескриптор окна, которое будет обрабатывать команду меню,
hMenu
дескриптор меню, x и y - позиция курсора.
Для подробностей смотрите Win32 SDK Help по функции TrackPopupMenuEx.


Наверх

Титульная страница Поиск, карта сайта Написать письмо