Сворачивание проги в панель часов.

Тема в разделе "Delphi - FAQ", создана пользователем DizeL, 6 авг 2004.

Статус темы:
Закрыта.
  1. DizeL

    DizeL Гость

    Никак не могу понять, как это сделать. Ни в одной книге это не описывается. Кто разбирается в данном вопрпосе, попрошу мимо не проходить. Заранее спасибо.
     
  2. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    DizeL
    хочешь совсем просто, то иди на torry.net и скачай CoolTrayIcon
     
  3. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    иконка делается так
    Код (Text):
    const
    WM_NOTIFYTRAYICON = WM_USER + 1;
    ...
    private
    procedure WMTRAYICONNOTIFY(var Msg: TMessage); message WM_NOTIFYTRAYICON;
    ...
    uses
    ShellAPI;

    procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage);
    var
    s: string;
    begin
    case Msg.LParam of
     WM_MOUSEMOVE:   s := 'Мышь сдвинута';
     WM_LBUTTONDOWN:  s := 'Левая кнопка нажата';
     WM_LBUTTONUP:   s := 'Левая кнопка отпущена';
     WM_LBUTTONDBLCLK: s := 'Два раза нажата левая кнопка';
     WM_RBUTTONDOWN:  s := 'Правая кнопка нажата';
     WM_RBUTTONUP:   s := 'Правая кнопка отпущена';
     WM_RBUTTONDBLCLK: s := 'Два раза нажата правая кнопка';
     else       s := IntToStr(Msg.LParam);
    end;
    ListBox1.Items.Add(s);
    ListBox1.ItemIndex := ListBox1.Items.Count - 1;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var
    tray: TNotifyIconData;
    Ic: TIcon;
    begin
    Ic := TIcon.Create;
    Ic.LoadFromFile('Icon1.ico');
    with tray do
    begin
     cbSize := SizeOf(TNotifyIconData);
     Wnd := Form1.Handle;
     uID := 1;
     uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
     uCallBackMessage := WM_NOTIFYTRAYICON;
     hIcon := Ic.Handle;
     szTip := ('Это наша иконка');
    end;
    Shell_NotifyIcon(NIM_ADD, Addr(tray));
    Ic.Destroy;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    tray: TNotifyIconData;
    Ic: TIcon;
    begin
    Ic := TIcon.Create;
    Ic.LoadFromFile('Icon2.ico');
    with tray do
    begin
     cbSize := SizeOf(TNotifyIconData);
     Wnd := Form1.Handle;
     uID := 1;
     uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
     uCallBackMessage := WM_NOTIFYTRAYICON;
     hIcon := Ic.Handle;
     szTip := ('Это другая иконка');
    end;
    Shell_NotifyIcon(NIM_MODIFY, Addr(tray));
    Ic.Destroy;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    var
    tray: TNotifyIconData;
    begin
    with tray do
    begin
     cbSize := SizeOf(TNotifyIconData);
     Wnd := Form1.Handle;
     uID := 1;
    end;
    Shell_NotifyIcon(NIM_DELETE, Addr(tray));
    end;
    А там обрабатывай OnMinimize и клики по иконке.
     
  4. DizeL

    DizeL Гость

    :(
    Кодик угрожающий, но попробую разобраться.
    Спасибо.
    А что из себя прога представляет?
     
  5. Barmutik

    Barmutik Гость

    Проще взять готовую компоненту .. в тех же Rx-lib сейчас которые входят в сотав Jedi есть готовая компонента .. только иконку назначил и всё у тебя в трее всё есть...ну единственно конечно минимайз всё равно самому придётся обрабатывать ...
     
  6. DizeL

    DizeL Гость

    <!--QuoteBegin-QUOTE+Barmutik-->
    <span class="vbquote">(QUOTE @ Barmutik)</span><!--QuoteEBegin-->Проще взять готовую компоненту .. в тех же Rx-lib сейчас которые входят в сотав Jedi есть готовая компонента .. только иконку назначил и всё у тебя в трее всё есть...ну единственно конечно минимайз всё равно самому придётся обрабатывать ...[/quote]
    Кстати, я так и не нашёл событие Onminimize. Что-то в моём Делфи7 такого и подавно нет. Или я не там смотрю? Как его обрабатывать-то? :rolleyes: Прошу помощи и спасибо за совет, кстати, мог бы послать мне компонет этот? Ящик dizel@students.ru . Заренее спасибо.

    С уважением Дизел.
     
  7. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    DizeL
    оно для объекта TApplication делается
    да скачай что я говорил и не майся дурью
    всё давно уже сделано
     
  8. Barmutik

    Barmutik Гость

    На закладке Additional есть компонет TApplicationEvents у него есть OnMinimize...

    Это тот же OnMinimize что и у TApplication так как этот компонент просто врапит эти методы.

    У него напиши что тебе надо делать по минимизации .. а тебе я думаю надо убирать прогу с экрана и с панели задач и она автоматически будет у твоего Application-а

    Удачи!

    ЗЫ: Да и сколько книжек видел во всех есть раздел как поместить программу в трэй... ну это так к слову :rolleyes:
     
  9. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Barmutik
    не говоря уже о бесконечных FAQ
    кстати на болнанде очень хорошие факи лежат
     
  10. DizeL

    DizeL Гость

    С.Бобровский "Описание системы и языка программирования Delphi. DELPHI 7." Ну и где тут ты это видел? ( так, к слову).

    Далее, спасибо за помощь, буду знать.


    А вот тут можно по-подробнее.


    P.S. - всем спасибо за проявленный интерес.
     
  11. DizeL

    DizeL Гость

    Что-то у меня этот "култрейайкон" выдает ошибку при первой же компеляции. Типа не найден файл "Cooltrayicon.dcu". Может неправильно установил компонент?
     
  12. DizeL

    DizeL Гость

    <!--QuoteBegin-Серёга+6:08:2004, 01:22 -->
    <span class="vbquote">(Серёга @ 6:08:2004, 01:22 )</span><!--QuoteEBegin-->DizeL
    хочешь совсем просто, то иди на torry.net и скачай CoolTrayIcon[/quote]
    Короче, всё нормально. Установил компонент, всё олично работает. Спасибо. Но вот есть проблема. Прогу сворачиваешь в трей. Всё нормально. Разворачиваешь, а вот второй раз она уже не сворачивается... Плохо! Что это за ... ?
    И ещё, есть мысли как сделать так, чтобы прога автоматом грузилась в трей не разворачиваесь при загрузке? Или может это будет некрасиво смотреться? Что посоветуем?

    Всем спасибо за помощь. С уважением DizeL.
     
  13. zubr

    zubr Гость

    Dizel

    В файле проекта после Application.Initialize; поставь Application.ShowMainForm:=False; - это чтобы не разворачивалась, а потом чтобы при клике на иконку в трее развернулось, в обработчике клика иконки поставь Form1.Visible:=True;
     
  14. Guest

    Guest Гость

    DizeL
    первый раз слышу
    у меня работает это во многих проектах отлично
    компилю под 7 Делфи.
     
  15. DizeL

    DizeL Гость

    А ну ка дай мне своё мыло, я тебе примерчик скину. Посмотришь, может я чего не так делаю. ОК?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей