Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 6
Всего онлайн: 6
Зарегистрировано юзеров: 7940
Комментариев на сайте: 698
Новый юзер: kotya.volkova



Последние комментарии
c
Dennisvoifs прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Пункт коммерческого учета цена, Ктп комплектные трансформаторные подстанции москва, Производство ктп москва и не только Вы найдете на нашем специализированном сайте: - Вам к нам!https://sviloguzov.ru/
Arthurneime прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[img]https://masterfutures.ru/wp-content/uploads/2020/03/14-2.png[/img] Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Broker Broker is operated by a dedicated team, whose main priority has always been to provide the best possible user experience, and ultimately satisfaction. Whether experienced in trading or a newcomer, the platform is easy to use and very responsive. The education section deserves special mention, particularly for assisting traders to learn and implement new strategies – which can be tested on the platforms free demo Source: [url=https://bit.ly/35fv3B6/]Broker[/url] https://bit.ly/35fv3B6/ Tags: Broker

Работать с Tray без компонентов

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

Во первых изменим стандартный TNotifyIconData на Z_TrayNotify, т.к. в стандарте szTip имеет 63 символа и это не очень удобно.

type
  Z_TrayNotify = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..MAXCHAR] of AnsiChar;
  end;
Во вторых добавим
const
  Ztray = WM_USER + 202;
Теперь две функции которые будут работать с трей.

function Z_AddTray(const Window: HWND; const IconID: Byte; const Icon: HICON;
    const dwMsg: Cardinal; const Hint: string = ''): Boolean;
var
  NID: Z_TrayNotify;
begin
  FillChar(NID, SizeOf(Z_TrayNotify), 0);
  with NID do
  begin
    cbSize := SizeOf(Z_TrayNotify);
    Wnd := Window;
    uID := IconID;
    uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
    StrPCopy(szTip, Hint);
    hIcon := Icon;
    uCallbackMessage := ZTray;
  end
  Result := Shell_NotifyIcon(dwMsg, @NID);
end;
С помощью этой функции можно Добавлять и Изменять иконку и подсказку.

function Z_DeleteTray(const Window: HWND): Boolean;
var
  NID: Z_TrayNotify;
begin
  FillChar(NID, SizeOf(Z_TrayNotify), 0);
  with NID do
  begin
    cbSize := SizeOf(Z_TrayNotify);
    Wnd := Window;
  end;
  Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;
С помощью этой функции удаляем иконку из трей. В третьих добавим после private вот этот обработчик сообщения (ZTray)
function TrayNotify(var Msg: TMessage): boolean;
и конечно сам обработчик
function TForm1.TrayNotify(var Msg: TMessage): boolean;
{
 var
 cur: TPoint;
}
begin
  {GetCursorPos(Cur);}

  Result := false;
  case Msg.Msg of
    ZTray:
      case (Msg.LParam) of
        WM_RBUTTONUP: Application.Restore;

        {WM_RBUTTONUP:
        begin
          SetForegroundWindow(Form1.Handle);
          TrayMenu.Popup(cur.x, cur.y);
        end;}

        WM_LBUTTONUp: Application.Minimize;
      end;
    end;
end;
WM_LBUTTONUP - сворачивает приложение WM_RBUTTONUP - восстанавливает, еще можно добавить меню (TrayMenu - TPopupMenu) и убрать все что в скобках { } Теперь как с этим работать. Сразу при создании формы пишем
Application.HookMainWindow(TrayNotify);
Ставится hook на отлов сообщения. При close или destroy пишем
Z_DeleteTray(Application.Handle); // на всякий случай
Application.unHookMainWindow(TrayNotify);
Снимаем hook На форме 3 кнопки и TrayIcons - TImageList. TrayIcons имеет две картинки 1 кнопка - создание иконки
var
  tIc: TIcon;
begin
  tIc := TIcon.Create;
  TrayIcons.GetIcon(0, tIc);
  Z_AddTray(Application.Handle, 0, tIc.Handle, NIM_ADD,
    'ЛКМ = Свернуть.' + #13 +
    'ПКМ = Развернуть.');

  tIc.Free;
end;
2 кнопка - изменение иконки и подсказки
var
  tIc: TIcon;
begin
  tIc := TIcon.Create;
  TrayIcons.GetIcon(1, tIc);
  Z_AddTray(Application.Handle, 0, tIc.Handle, NIM_MODIFY,
    'Поменял Hint(подсказку) и иконку.' + #13 +
    'Всего Hint вмещает 128 символов');

  tIc.Free;
end;
3 кнопка - удаление иконки
Z_DeleteTray(Application.Handle);
Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 1 Октября 2017
Просмотров:


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