Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: Балун в трее  (Прочитано 50013 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« : 19-06-2008 11:04 » 

Коллеги, подскажите, пожалуйста, как можно показать балун на иконке в трее?
Я использую TTrayIcon и всё бы ничего, но никак не могу заставить балун появиться именно относительно этой моей иконки — он постоянно появляется рядом! 
Вот как я это делаю:
Код:
NOTIFYICONDATA nid = { 0 };

nid.cbSize = sizeof( NOTIFYICONDATA );
nid.dwInfoFlags = NIIF_ERROR;
nid.hIcon = NULL; // я не знаю как получить хендл иконки в трее. TTrayIcon использует TImageList
nid.hWnd = this->Handle; // Хэндл основного окна
nid.uID = 0; // Я так и не понял толком что это такое. Мне кажется, что это TTrayIcon->IconIndex...
strcpy( nid.szInfo, "balloon text" );
strcpy( nid.szInfoTitle, "balloon title" );
strcpy( nid.szTip, "tip text" );
//nid.uCallbackMessage = WM_USER + 10;
nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_INFO;
nid.uTimeout = 15000;
Shell_NotifyIcon( NIM_ADD, &nid );

Очень надеюсь на вашу помощь.

ЗЫ: Я использую Builder 6
« Последнее редактирование: 20-06-2008 12:22 от HempStar » Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #1 : 19-06-2008 11:05 » 

у меня так вообще ничего не появлялось... замучился. потом бросил.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 19-06-2008 11:06 » 

HempStar, в разделе FAQ по Visual C++ есть , как это сделать, я лично вписывал )
ищи по слову BALOON
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 19-06-2008 11:08 » 

тут или тут -
https://forum.shelek.ru/index.php/topic,11802.0/wap2.html

https://forum.shelek.ru/index.php/topic,11731.0/wap2.html

я щас не могу искать (
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #4 : 19-06-2008 11:09 » 

HempStar, классно... твой код заработал. только с дополнительным местом. в первый раз такое вижу...
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #5 : 19-06-2008 11:10 » 

Алексей1153++, а в Visual C++ у меня, например, работало. в билдере нет.
Записан
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 19-06-2008 11:12 » 

Но при чем здесь Visual С++ ?!  Там немного по-другому это сделано. Мне бы для билдера... К тому же, балун-то появляется, но не в том месте, где нужно. Я думаю, что проблема решается как-то совсем просто.
Если вы знаете ответ, то, я вас умоляю, напишите его здесь да и всё, а то я уже полдня разнообразные факи перелопачиваю и, поверьте, еще ни один не помог.
« Последнее редактирование: 19-06-2008 11:32 от HempStar » Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 19-06-2008 11:14 » 

HempStar, какая разница - вижуал, не вижуал )) Ты вначале прочитай там. Вечером гляну, если что
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #8 : 19-06-2008 11:17 » 

HempStar, надо как-то хендл получить
Записан
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 19-06-2008 11:25 » 

Алексей1153++, да есть разница, в том-то и дело Жаль  Взять хотя бы тот же LoadIcon() - я, например, не в курсе как его использовать в билдере. К тому же, я бы не хотел делать в коде новые обработчики и прочие изменения - TrayIcon меня, в общем-то, полностью пока устраивает, не хватает только нормального балуна.

marat_, похоже на то, но, вместе с ним, возможно нужно что-то еще, типа, NIM_ADD сменить на NIM_MODIFY или еще что-то подобное...
И какой хендл получить нужно??? TrayIcon? Я пытался - у меня не получилось :'(
« Последнее редактирование: 19-06-2008 11:29 от HempStar » Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 19-06-2008 11:35 » 

HempStar, нету разницы в этом случае:
Код:
HICON LoadIcon(          HINSTANCE hInstance,
    LPCTSTR lpIconName
);
Parameters

hInstance
[in] Handle to an instance of the module whose executable file contains the icon to be loaded. This parameter must be NULL when a standard icon is being loaded.
lpIconName
[in]
Pointer to a null-terminated string that contains the name of the icon resource to be loaded. Alternatively, this parameter can contain the resource identifier in the low-order word and zero in the high-order word. Use the MAKEINTRESOURCE macro to create this value.

To use one of the predefined icons, set the hInstance parameter to NULL and the lpIconName parameter to one of the following values.

IDI_APPLICATION
Default application icon.
IDI_ASTERISK
Same as IDI_INFORMATION.
IDI_ERROR
Hand-shaped icon.
IDI_EXCLAMATION
Same as IDI_WARNING.
IDI_HAND
Same as IDI_ERROR.
IDI_INFORMATION
Asterisk icon.
IDI_QUESTION
Question mark icon.
IDI_WARNING
Exclamation point icon.
IDI_WINLOGO
Windows logo icon. Windows XP: Default application icon.
Return Value

If the function succeeds, the return value is a handle to the newly loaded icon.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

а для балона нужно флаг указать

кстати, не для трея я делал, хм, но может поможет:
Код:
m_ToolTip.Create(this,0x40); //TTS_BALLOON==0x40

там имеется недокументированный флаг свойств баллона - 0x40
Записан

BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 19-06-2008 11:42 » 

Очень интересно. А как мне получить HINSTANCE программы? Да и имени иконки в Билдере не предусмотрено!

И что за тип у m_ToolTip? Это контрол какой-то?
« Последнее редактирование: 19-06-2008 11:48 от HempStar » Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 19-06-2008 11:54 » 

HempStar, сейчас не могу покопаться (( Вечером пороюсь, а сейчас я бесполезен )))
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 19-06-2008 18:07 » 

порылся я в мсдн, тоже только прямоугольного баллона добился, облако не даётся никак ...
Записан

BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 20-06-2008 10:07 » 

Да черт с ним с облаком! Мне любой сойдет, лишь бы над моей иконкой в трее появлялся.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #15 : 20-06-2008 10:32 » 

так прямоугольный то без проблем появляется:

Код:
NOTIFYICONDATA ndata=
{
sizeof(NOTIFYICONDATA),
m_hWnd, //хендл окна для отлова сообщений
e_tray_puttotray_ID,  //==1000
NIF_ICON|NIF_MESSAGE|NIF_TIP,
WM_COMMAND,
::AfxGetApp()->LoadIcon(IDR_MAINFRAME), //как в билдере не знаю
"текст тултипа"
};

Shell_NotifyIcon(NIM_ADD,&ndata);
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #16 : 20-06-2008 10:34 » 

кстати, можно поймать движение мыши по иконке в трее , определить координаты курсора и нарисовать какой угодно свой тултип - произведённых, скажем, от встроенного тултипа
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #17 : 20-06-2008 12:00 » 

Алексей1153++, в билдере или вообще не появляется, или не там, где надо.
нам бы твои проблемы...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 20-06-2008 14:37 » 

marat_, а какие у меня проблемы, которые тебе бы ? ))
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #19 : 20-06-2008 22:39 » 

Алексей1153++, с облаком)))
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 20-06-2008 22:40 » 

marat_, да нет у меня проблем с облаком, они все у HempStar )
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #21 : 20-06-2008 22:42 » 

Алексей1153++, а как же 14 пост?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #22 : 21-06-2008 06:18 » 

marat_, 14 - это твой Улыбаюсь

а 13-й - это обращение к HempStar
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #23 : 21-06-2008 07:42 » 

Алексей1153++, ты опять из вапа?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #24 : 21-06-2008 07:46 » 

marat_, нет , значок то посмотри у поста какой )
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #25 : 21-06-2008 08:32 » 

Алексей1153++,

HempStar
Участник
Offline
Re: Балун в трее
« Ответ #14 : Вчера в 11:07 »  Цитировать 
--------------------------------------------------------------------------------
Да черт с ним с облаком! Мне любой сойдет, лишь бы над моей иконкой в трее появлялся.

вот, что вижу я


 
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #26 : 21-06-2008 16:14 » 

marat_, странно, может я ник попутал - тогда пост не твой, но и не мой тоже

в общем - проблема то не у меня, а у него
Записан

BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 23-06-2008 09:31 » 

Ну вы и нафлудили Улыбаюсь
в общем, я так понимаю, что в шестом билдере эта проблема не рашаема. Примеры из вижуал студии, к сожаленью, помочь ничем не могут - ну не VCL это. Попробую поискать какой-нибудь кастомный компонент. Всем спасибо за дискуссию.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
zubr
Гость
« Ответ #28 : 23-06-2008 19:19 » 

Ну вы и нафлудили Улыбаюсь
в общем, я так понимаю, что в шестом билдере эта проблема не рашаема. Примеры из вижуал студии, к сожаленью, помочь ничем не могут - ну не VCL это. Попробую поискать какой-нибудь кастомный компонент. Всем спасибо за дискуссию.
Ты не прав, в Delphi решаема, значит и в билдере решаема. VCL здесь не причем. Вот сваял пример на Delphi (билдера давно на компе нет):
Код:
unit Unit1;

interface

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

const
  UWM_NOTIFYICON = WM_USER+200;
  WM_CLOSEBALLOON = WM_USER+201;

  NIF_INFO      =        $00000010;

  NIIF_NONE     =        $00000000;
  NIIF_INFO     =        $00000001;
  NIIF_WARNING  =       $00000002;
  NIIF_ERROR    =        $00000003;


type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Mn_exit: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Mn_exitClick(Sender: TObject);
  private
    { Private declarations }
    procedure OnNotifyIcon(var msg:TMessage); message UWM_NOTIFYICON;
    procedure OnCloseBalloon(var msg:TMessage); message WM_CLOSEBALLOON;
  protected
   function SetIconTray(const hIcon:HICON; const IconID:cardinal;
                              const szTip:string; open:boolean=True):boolean;
   function BalloonTrayIcon(const IconID:cardinal; const Timeout:UINT;
                           const BalloonText, BalloonTitle:String;
                           const BalloonIconType:DWORD):boolean;
  public
    { Public declarations }
  end;

  NotifyIconData_Full = record // определённая в shellapi.h
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array[0..MAXCHAR] of AnsiChar;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfo: array[0..MAXBYTE] of AnsiChar;
    uTimeout: UINT; // union with uVersion: UINT;
    szInfoTitle: array[0..63] of AnsiChar;
    dwInfoFlags: DWORD;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.BalloonTrayIcon(const IconID:cardinal; const Timeout:UINT;
                           const BalloonText, BalloonTitle:String;
                           const BalloonIconType:DWORD):boolean;
var
  data:NotifyIconData_Full;
begin
 ZeroMemory(@data, sizeof(data));
 data.cbSize := sizeof(data);
 data.Wnd := Handle;
 data.uID:= IconID;
 data.uFlags := NIF_INFO;
 StrPCopy(data.szInfo, BalloonText);
 StrPCopy(data.szInfoTitle, BalloonTitle);
 data.dwInfoFlags := BalloonIconType;
 data.uTimeout := Timeout;
 Result := Shell_NotifyIcon(NIM_MODIFY, @data);
end;

function TForm1.SetIconTray(const hIcon:HICON; const IconID:cardinal;
                              const szTip:string; open:boolean=True):boolean;
var
  data:NotifyIconData;
begin
 Result:=False;
 ZeroMemory(@data, sizeof(data));
 data.cbSize := sizeof(data);
 data.Wnd := Handle;
 If open then
 begin
  data.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE or NIF_INFO;
  data.uID:=IconID;
  data.hIcon := hIcon;
  if data.hIcon = 0 then
  exit;
  //устанавливаем обработчик сообщений иконки
  data.uCallbackMessage := UWM_NOTIFYICON;
  StrPCopy(data.szTip, szTip);
  Result := Shell_NotifyIcon(NIM_ADD, @data);
 end
 else
 Result := Shell_NotifyIcon(NIM_DELETE, @data);
end;

procedure TForm1.OnNotifyIcon(var msg:TMessage);
var
  point:TPoint;
begin
 inherited;
 if msg.LParam=WM_RBUTTONUP then
 begin
  //вызываем попап-меню
  SetForegroundWindow(Handle);
  GetCursorPos(point);
  PopupMenu1.Popup(point.x, point.y);
  PostMessage(Handle, WM_NULL, 0, 0);
 end;
 if msg.LParam=WM_MOUSEMOVE then
 begin
  //вызываем балун
  BalloonTrayIcon(0, 15000, 'this is the balloon text', 'title', NIIF_WARNING);
  //когда курсор вышел из иконки вызываем закрытие баллуна
  PostMessage(Handle, WM_CLOSEBALLOON, 0, 0);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 //добавляем иконку в трей при открытии приложения
 SetIconTray(Application.Icon.Handle, 0, 'blablabla');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 SetIconTray(0, 0, '', False);
end;

procedure TForm1.OnCloseBalloon(var msg:TMessage);
begin
 BalloonTrayIcon(0, 0, '', '', 0);
end;

procedure TForm1.Mn_exitClick(Sender: TObject);
begin
 Close;
end;

end.
В аттачменте екзешник примера.

З.Ы. Забыл, констатнты объявленные в исходнике (кроме UWM_NOTIFYICON, WM_CLOSEBALLOON), а также структуру NotifyIconData_Full в билдере объявлять не надо, так как в shellapi.h все это должно быть.

* Project1.rar (154.19 Кб - загружено 1063 раз.)
« Последнее редактирование: 24-06-2008 03:59 от zubr » Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #29 : 24-06-2008 05:25 » 

zubr, просто в билдере компонент есть иконка треевская. вот из неё балун ну никак не получится.
Записан
zubr
Гость
« Ответ #30 : 24-06-2008 16:40 » 

marat_
Цитата
Но при чем здесь Visual С++ ?!  Там немного по-другому это сделано. Мне бы для билдера... К тому же, балун-то появляется, но не в том месте, где нужно. Я думаю, что проблема решается как-то совсем просто.
Проблема решается одинаково, что в студии, что в билдере, что в Delphi, что в любой другой среде программирования под Windows. Поэтому, когда говорят в студии можно сделать, а билдере нет (или наоборот), то говорят ерунду. А компонент - это готовое решение, и не всегда оно оптимально, для конкретной задачи, поэтому не стоит всегда надеяться на готовые компоненты, иногда стоит приложить и свои руки, имхо.
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #31 : 24-06-2008 23:45 » 

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

возможно вся проблема в том, что сам компонент находится на вкладке примеры. т.е. он возможно недоработан, и балун там просто не предусмотрен.
Записан
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #32 : 25-06-2008 09:11 » 

Совершенно верно. Балуна в TTrayIcon в шестом билдере нет. Но проблема в том, что невозможно его дорисовать, потому как не получается добраться до нужных хендлов! А раз так, то система рассматривает эти попытки добавить балун как рисование новой иконки в трее и т.д. и т.п.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
zubr
Гость
« Ответ #33 : 25-06-2008 09:22 » 

HempStar, смотри, ты сколько времени затратил на создание балуна в трее с использованием TTrayIcon, когда за это время можно было решить вопрос без всяких компонентов или свой компонент написать.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #34 : 25-06-2008 10:06 » 

HempStar, до каких хендлов добраться нельзя?
Записан

Удачного всем кодинга! -=x[PooH]x=-
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 25-06-2008 10:26 » 

добраться до хендла окошка, которое содержит иконки трея,  можно так:
Код:
HWND hShell_TrayWnd=::FindWindow("Shell_TrayWnd",0);
if(hShell_TrayWnd)
{
HWND hTrayNotifyWnd=::FindWindowEx(hShell_TrayWnd,0,"TrayNotifyWnd",0);
if(hTrayNotifyWnd)
{
HWND hSysPager=::FindWindowEx(hTrayNotifyWnd,0,"SysPager",0);
if(hSysPager)
{
HWND hToolBarWindow32=::FindWindowEx(hSysPager,0,"ToolBarWindow32",0);
if(hToolBarWindow32)
{
//hToolBarWindow32 - искомое
}
}
}
}
Записан

marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #36 : 25-06-2008 11:22 » 

Алексей1153++, похоже на поиск золота в куче песка...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #37 : 25-06-2008 13:46 » 

marat_, такова иерархия окон, все вопросы к дядюшке Биллу Улыбаюсь
Записан

alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #38 : 08-04-2009 06:53 » 

что то не понимаю, сделал, вроде работает, но показывет почему то один раз!
может как-то надо  true false где то написать при показе.
Записан

Улыбаюсь Ага
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #39 : 08-04-2009 07:45 » 

alex87, код в студию )
Записан

alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 09-04-2009 03:06 » 

вроде сделал
Код:
void __fastcall TForm1::CreateBallon() //создание
{
nid.cbSize = sizeof( NOTIFYICONDATA );
nid.dwInfoFlags = NIIF_INFO;
nid.hIcon = Image1->Picture->Icon->Handle;
nid.hWnd = this->Handle;
nid.uID = 0;
nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_INFO;
nid.uTimeout = 100;
Shell_NotifyIcon(NIM_ADD, &nid);
}
Код:
void __fastcall TForm1::ShowBallon(AnsiString mes) //показ балуна
{
strcpy( nid.szInfo, mes.c_str() );
strcpy( nid.szInfoTitle, "Сообщение!" );
strcpy( nid.szTip, "Программа" );
Shell_NotifyIcon( NIM_MODIFY, &nid );
}
теперь вот она рисует иконку в трее, но еще есть компанент трейикон который создает иконку и минимизирует программу и на ней стоит обработчик восстановления, как теперь сделать чтоб не было двух иконок в трее а одна которая как раз показывает балун и при 2м нажатии по нему программа востанавливалась?
Записан

Улыбаюсь Ага
zubr
Гость
« Ответ #41 : 09-04-2009 04:19 » 

alex87, надо сделать выбор - или своя иконка, тогда к ней надо просто прикрутить обработчик, или иконка от компонента трейикон, но тогда не будет балуна...
Записан
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #42 : 10-04-2009 02:23 » 

а можно например сделать чтоб при нажатии на сообщение балун форма разворачивалась?
Записан

Улыбаюсь Ага
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #43 : 10-04-2009 02:36 » 

еще есть без балуна, рисовать окно... HintWindow, есть у кого пример как обьявить и нарисовать это окно?
Записан

Улыбаюсь Ага
zubr
Гость
« Ответ #44 : 10-04-2009 03:35 » 

а можно например сделать чтоб при нажатии на сообщение балун форма разворачивалась?
Не понял, что значит при нажатии на сообщение...
Обработку сообщений иконки, которые вызывают-закрывают балун смотри в моем примере в этой теме.
еще есть без балуна, рисовать окно... HintWindow, есть у кого пример как обьявить и нарисовать это окно?
В борланде можно сделать 2-мя путями:
1. Используя компонент TApplicationEvents, создавать свое окно в обработчике данного компонента OnShowHint.
2. Переопределить свой класс на базе класса THintWindow.
Записан
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #45 : 10-04-2009 05:57 » 

Цитата
2. Переопределить свой класс на базе класса THintWindow.
есть инфа как по шагово применить THintWindow?
Записан

Улыбаюсь Ага
zubr
Гость
« Ответ #46 : 10-04-2009 09:27 » 

1. Открываешь исходники на THintWindow (в Delphi в файле Controls.pas). Изучаешь их.
2. Создаешь свой класс-наследник THintWindow.
3. Добавляешь к нему (или переопределяешь) свои нужные тебе свойства-методы.
4. В событии (как вариант) OnCreate главной формы приложения глобальной переменной HintWindowClass устанавливаешь значение твоего класса, предварительно сохранив в другой переменной старое значение класса, примерно так:
Код:
Application->ShowHint = false;
 THintWindowClass OldHintWindowClass =  HintWindowClass;
 HintWindowClass = TMyHintWindow;
 Application->ShowHint = true;
5. Для возврата стандартного или предыдущего класса хинта присваиваем глобальной переменной HintWindowClass старое значение класса.
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines