Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание baloon 
:(
    Опции темы
Christoph
Дата 11.10.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Код

procedure ShowBalloonTip(Control: TWinControl; Icon: integer; Title: pchar;
  Text: PWideChar;
  BackCL, TextCL: TColor);
const
  TOOLTIPS_CLASS = 'tooltips_class32';
  TTS_ALWAYSTIP = $01;
  TTS_NOPREFIX = $02;
  TTS_BALLOON = $40;
  TTF_SUBCLASS = $0010;
  TTF_TRANSPARENT = $0100;
  TTF_CENTERTIP = $0000;
  TTM_ADDTOOL = $0400 + 50;
  TTM_SETTITLE = (WM_USER + 32);
  ICC_WIN95_CLASSES = $000000FF;
type
  TOOLINFO = packed record
    cbSize: Integer;
    uFlags: Integer;
    hwnd: THandle;
    uId: Integer;
    rect: TRect;
    hinst: THandle;
    lpszText: PWideChar;
    lParam: Integer;
  end;
var
  hWndTip: THandle;
  ti: TOOLINFO;
  hWnd: THandle;
begin
  hWnd := Control.Handle;
  hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
    WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
    0, 0, 0, 0, hWnd, 0, HInstance, nil);
  if hWndTip <> 0 then
  begin
    SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
      SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    ti.cbSize := SizeOf(ti);
    ti.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
    ti.hwnd := hWnd;
    ti.lpszText := Text;
    Windows.GetClientRect(hWnd, ti.rect);
    SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
    SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
    SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
    SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title));
  end;


Хочу создать всплывающее окна возле трея, использую балун,но как мне сделать что при каком то событии он выводился возле трея, а не при наведении курсора на контрол? и как расчитать позицию окна?


Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  bool.JPG 16,06 Kb


--------------------
user posted image
PM MAIL ICQ   Вверх
AXS
Дата 13.10.2009, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: нет
Всего: -1



Есть такой компонент - CoolTrayIcon/ Позволяет выводить иконку в трее (в том числе анимированую) Привязывать к ней PopUpMenu и выводить BaloonHint в любое время по твоему желанию.

Ссылка:
Без надобности не кликать smile

Это сообщение отредактировал(а) AXS - 13.10.2009, 07:16

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  wsk.png 19,92 Kb
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
AntonN
Дата 13.10.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



можно самому нарисовать такое окошко.
Получить рабочую область можно так:
Код

var rWorkArea: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @rWorkArea, 0);

rWorkArea - прямоугольник рабочей области


--------------------
user posted image
PM MAIL WWW   Вверх
Hexel
Дата 22.10.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 30.10.2007
Где: UA

Репутация: нет
Всего: нет



вспомнился такой пример, когда осваивал 1с smile
если речь идет именно об сообщении в системном трее
умеет держать всплывающую подсказку столько-то миллисекунд

Код

procedure T_vk_object.sleep_icon(msg: String; ms: Integer);
var
  Icon: HICON;
  Wnd: HWND;
begin
  Wnd:=GetForegroundWindow();
  Icon := LoadIcon(0, IDI_APPLICATION);
  DZAddTrayIcon(Wnd, 1, Icon, g_Title);
  DZBalloonTrayIcon(Wnd, 1, 10, msg, g_Title, TBalloonIconType(g_IconType));
  Sleep(ms);
  DZRemoveTrayIcon(Wnd, 1);
end;


собственно юнит

Код

unit uBalloon;
(*
Îáðàçöû êîäà âçÿòû èç
Delphi Russian Knowledge Base
from Vit
Version 2.2

*)

interface
uses  { Êàêèå áèáëèîòåêè èñïîëüçóåì }
  Windows, ShellAPI, SysUtils;



type
  TBalloonTimeout = 10..30{seconds};
  TBalloonIconType = (bitNone,    // íåò èêîíêè
                      bitInfo,    // èíôîðìàöèîííàÿ èêîíêà (ñèíÿÿ)
                      bitWarning, // èêîíêà âîñêëèöàíèÿ (æ¸ëòàÿ)
                      bitError);  // èêîíêà îøèáêè (êðàñíàà)

function DZAddTrayIcon(const Window: HWND; const IconID: Byte; const Icon: HICON; const Hint: String = ''): Boolean;
function DZRemoveTrayIcon(const Window: HWND; const IconID: Byte): Boolean;
function DZBalloonTrayIcon(const Window: HWND; const IconID: Byte; const Timeout: TBalloonTimeout; const BalloonText, BalloonTitle: String; const BalloonIconType: TBalloonIconType): Boolean;



implementation

const
  NIF_INFO      =        $00000010;

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

type
  NotifyIconData_50 = 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{record};

///////////////////////////////////////////////////////////////////////
{äîáàâëåíèå èêîíêè }
//Âçÿòî ñ Èñõîäíèêîâ.ru http://www.sources.ru
function DZAddTrayIcon(const Window: HWND; const IconID: Byte; const Icon: HICON; const Hint: String = ''): Boolean;
var
  NID : NotifyIconData;
begin
  FillChar(NID, SizeOf(NotifyIconData), 0);
  with NID do begin
    cbSize := SizeOf(NotifyIconData);
    Wnd := Window;
    uID := IconID;
    if Hint = '' then begin
      uFlags := NIF_ICON;
    end{if} else begin
      uFlags := NIF_ICON or NIF_TIP;
      StrPCopy(szTip, Hint);
    end{else};
    hIcon := Icon;
  end{with};
  Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;

///////////////////////////////////////////////////////////////////////
{óäàëÿåò èêîíêó}
//Âçÿòî ñ Èñõîäíèêîâ.ru http://www.sources.ru

function DZRemoveTrayIcon(const Window: HWND; const IconID: Byte): Boolean;
var
  NID : NotifyIconData;
begin
  FillChar(NID, SizeOf(NotifyIconData), 0);
  with NID do begin
    cbSize := SizeOf(NotifyIconData);
    Wnd := Window;
    uID := IconID;
  end{with};
  Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;

///////////////////////////////////////////////////////////////////////
{Ïîêàçûâàåò áàëëîí}
//Âçÿòî ñ Èñõîäíèêîâ.ru http://www.sources.ru



///////////////////////////////////////////////////////////////////////
function DZBalloonTrayIcon(const Window: HWND; const IconID: Byte; const Timeout: TBalloonTimeout; const BalloonText, BalloonTitle: String; const BalloonIconType: TBalloonIconType): Boolean;
const
  aBalloonIconTypes : array[TBalloonIconType] of Byte = (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
var
  NID_50 : NotifyIconData_50;
begin
  FillChar(NID_50, SizeOf(NotifyIconData_50), 0);
  with NID_50 do begin
    cbSize := SizeOf(NotifyIconData_50);
    Wnd := Window;
    uID := IconID;
    uFlags := NIF_INFO;
    StrPCopy(szInfo, BalloonText);
    uTimeout := Timeout * 1000;
    StrPCopy(szInfoTitle, BalloonTitle);
    dwInfoFlags := aBalloonIconTypes[BalloonIconType];
  end{with};
  Result := Shell_NotifyIcon(NIM_MODIFY, @NID_50);
end;

end.


сорри, русские каменты поглючило, копировал из делфи
на всякий случай скидываю весь пример, там не только проект (это тестовая компонента для 1с). думаю, разберешься

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  TestVK.rar 78,81 Kb
PM MAIL   Вверх
CodeMonkey
Дата 22.10.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Документированным способом иконки в трее делаются через Shell_NotifyIcon (пример Hexel, также TrayIcon-компоненты являются обёртками вокруг этой функции). Все прочие способы желательно отправить на свалку за неимением существенных причин на существование.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.