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

Вниз

Подскажите пожалуйста по TrayIcon   Найти похожие ветки 

 
Слава_   (2004-02-13 22:34) [0]

че она (иконка) после закрытия приложения продолжает весеть в трэе, а исчезает когда на нее мышь наведешь? Как это побороть, может у кого была такая проблема?

вот весь мой код

CreateTraylcon(0,"Project1");

procedure TMainForm.CreateTraylcon(n:Integer;xHint:string);
begin
with nidata do
begin
cbSize := SizeOf(TNotifyiconData) ;
Wnd := Self.Handle;
uID := n;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYTRAYNOTIFY;
hicon := Application.Icon.Handle;
szTip := "Project1";
end;
Shell_NotifyIcon(NIM_ADD, @nidata);
end;

procedure TMainForm.DeleteTraylcon(n:Integer);
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle; uID := n;
end;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
DeleteTraylcon(0);
end;

только просьба не надо предлагать ставить всякие КРУТЫЕ компоненты и тд, помогите разобраться плиз, че не хватает


 
Defunct   (2004-02-14 06:10) [1]

После удаления иконки послать сообщение WM_PAINT окну трея.
можно использовать функцию:
UpdateWindow(HWND hWnd);


 
sniknik   (2004-02-14 08:16) [2]

попробуй uID задавать отличное от нуля. ноль во многих случаях признак ошибки, необязательно в этом, но тем не менее создавай с с uID > 0 и удаляй с этим же.


 
sniknik   (2004-02-14 08:21) [3]

кстати еще может быть "непонятка" в этом Wnd := Self.Handle; если ты CreateTraylcon вызываеш не из метода TMainForm, а уничтожение видно из него, хендлы могут быть различны. попробуй явно указать (опять в обоих вариантах) так Wnd := MainForm.Handle;


 
Владислав   (2004-02-14 10:36) [4]

> Defunct (14.02.04 06:10) [1]

Приколист, однако...

> Слава_ (13.02.04 22:34)

Во первых, смотри sniknik © (14.02.04 08:21) [3].
Во вторых, убедись, что DeleteTraylcon(n:Integer) действительно выполняется, и делает то, что нужно.
Ну и еще... Попробуй DeleteTraylcon(n:Integer) вызывать не в OnDestroy, а в OnClose, например.


 
Rouse_   (2004-02-14 10:41) [5]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellApi, Menus;

const
wm_IconMessage = wm_User;

type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
ghgf1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ghgf1Click(Sender: TObject);
private
{ Private declarations }
nid: TNotifyIconData;
public
{ Public declarations }
procedure IconTray (var Msg: TMessage);message wm_IconMessage;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
nid.cbSize := sizeof (nid);
nid.wnd := Handle;
nid.uCallBAckMessage := wm_IconMessage;
nid.hIcon := Application.Icon.Handle;
nid.szTip := "Zool";
nid.uFlags := nif_Message or nif_Icon or nif_Tip;
Shell_NotifyIcon (NIM_ADD, @nid);
end;

procedure TForm1.IconTray (var Msg: TMessage);
var
Pos: TPoint;
begin
if Msg.lParam = WM_RBUTTONDOWN then
begin
GetCursorPos (Pos);
PopupMenu1.Popup (Pos.X, Pos.Y);
end;
if Msg.lParam = WM_LBUTTONDOWN then begin
ShowWindow (Handle, SW_NORMAL);
ShowWindow (Application.Handle, SW_NORMAL);
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
nid.uFlags := 0;
Shell_NotifyIcon (NIM_DELETE, @nid);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;//Запрещаем закрытие
ShowWindow (Handle, sw_Hide); //Скрываем окно
ShowWindow (Application.Handle, sw_Hide); //Убираем окно с таксбара
end;

procedure TForm1.ghgf1Click(Sender: TObject);
begin
Application.Terminate;
end;

end.


Желаю успехов


 
Владислав   (2004-02-14 10:59) [6]

> Слава_ (13.02.04 22:34)

Что называется, улови разницу Слава_ (13.02.04 22:34) и Rouse_ © (14.02.04 10:41) [5].


 
Слава_   (2004-02-19 01:07) [7]

спасибо большое всем!
изменил uID и все ОК !!!



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
3-5982
Zilog
2004-01-25 02:05
2004.03.03
SQL. Переносимость....


1-6120
czech
2004-02-20 15:56
2004.03.03
Tisk.


1-6105
Cerber
2004-02-20 19:35
2004.03.03
перевести фокус на нужное окно


1-6125
Dysan
2004-01-23 13:18
2004.03.03
никак не могу разобраться с методом


1-6070
race1
2004-02-21 15:01
2004.03.03
двумерный tlist





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский