![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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.