Внешняя компонента NativeAPI для работы с системным треем



Компонента позволяет организовать общение с 1С через системный трей

Компонента построена по технологии NativeAPI, поэтому ее можно подключить из макета. Компонента имеет имя «Message1C», создаваемый объект имеет имя «AddIn.Message1C.TMessage1C»

Краткое опиание методов:

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

СпрятатьИконкуГлавногоОкна – Убирает иконку программы из системного трея.

ПоказатьИконкуГлавногоОкна – Показывает иконку программы в системном трее.

ЗагрузитьИконкуГлавногоОкнаИзФайла(ИмяФайла) – загружает иконку из файла.

УстанвоитьТипФона(ТипФона) – устанавливает тип фона сообщений в трее.

УстанвоитьПользовательскийФон(ФонЦветГраницы, ФонЦветЗаливки) – позволяет установить параметры прорисовки пользовательского фона сообщения.

ДобавитьСообщение(Ключ,Заголовок,ТекстСообщения) – Добавляет оповещение через сообщение в трей.

УдалитьСообщение(Ключ) – Удаляет сообщение.

ОчиститьСообщения – Удаляет все сообщения.

ПоказатьСообщениеВТрее(Ключ,Заголовок,ТекстСообщения,ДлительностьПоказа) – Позволяет послать типовое системное сообщение в трей.

ТекстПодсказкиИконкиГлавногоОкна – Свойство, текст подсказки иконки.

ГлубинаБуфераСобытий – Свойство, Число, задается глубина буфера событий

ПрятатьОкноПриМинимизации – Свойство, Булево, если Истина то при минимизации окна пользователем будет прятаться в трей.

ЦветТекстаЗаголовка – Свойство, цвет, задает цвет заголовка сообщения

ЦветТекста – Свойство, цвет, задает цвет текста сообщения

 

В зависимости от действий пользователя компонента оповещает 1С по средствам внешних событий о его действиях. Источник всегда строка «Message1C». Далее описано какие события могут быть:

BallonUserClick – Пользователь нажал на сообщение посланное методом ПоказатьСообщениеВТрее. Параметр «Данные» будет содержать Ключ сообщения.

BallonTimeOut – Вышло время ожидания сообщением посланным методом ПоказатьСообщениеВТрее. Параметр «Данные» будет содержать Ключ сообщения.

FormHide – Основная форма была скрыта

FormShow – Основная форма была показана

Close – Пользователь выбрал команду «Закрыть» из контекстного меню. Об обработке команды должен заботится программист конфигурации.

MessageActivate – Было активировано (выбрано) сообщение посланное методом ДобавитьСообщение. Параметр «Данные» будет содержать Ключ сообщения.

MessageClose – Сообщение посланное методом ДобавитьСообщение было закрыто кнопкой «Закрыть» сообщения.

 

В архиве содержится конфигурация-пример и сама компонента в макете обработки.

5 Comments

  1. DrAku1a

    мм.. А исходники есть?

    Reply
  2. Matveymc

    (1) DrAku1a, Добавил исходники на Delphi XE5

    Reply
  3. EmpireSer

    Классно, удобно, отлично.

    Эх, только как жалко, что это не работает в приложениях, опубликованных через терминал…

    Reply
  4. BoBaH

    Matveymc, а то, что 1С:Предприятие (в частности, конфигурация Документооборот) не находит свернутого в трей приложения и запускает второй (третий и далее по ряду целых чисел) экземпляр программы — баг или фича?

    Reply
  5. Matveymc

    (4) BoBaH,

    Скорее всего вы создаете несколько экземпляров объекта компоненты. Вот простой пример правильного использования:

    В модуле управляемого приложения:

    Перем мОбъектВК;
    
    Процедура ПриНачалеРаботыСистемы()
    
    КомпонентаПодключена=Ложь;
    
    #Если НЕ ВебКлиент Тогда
    Попытка
    ПодключитьВнешнююКомпоненту(«ОбщийМакет.Message1Cdll»,»Message1C»,ТипВнешнейКомпоненты.Native);
    мОбъектВК = Новый(«AddIn.Message1C.TMessage1C»);
    КомпонентаПодключена=Истина;
    Исключение
    КомпонентаПодключена=Ложь;
    КонецПопытки;
    
    Если НЕ КомпонентаПодключена Тогда
    Попытка
    УстановитьВнешнююКомпоненту(«ОбщийМакет.Message1Cdll»);
    Исключение
    Сообщить(«Не удалось устанвить внешнюю компоненту.»+Символы.ПС+ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    Попытка
    ПодключитьВнешнююКомпоненту(«ОбщийМакет.Message1Cdll»,»Message1C»,ТипВнешнейКомпоненты.Native);
    мОбъектВК = Новый(«AddIn.Message1C.TMessage1C»);
    Исключение
    Сообщить(«Не удалось загрузить компоненту Message1C: «+Символы.ПС+ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    КонецЕсли;
    
    мОбъектВК.ТекстПодсказкиИконкиГлавногоОкна=»Произвольный текст подсказка»;
    мОбъектВК.ПрятатьОкноПриМинимизации=Истина;
    #КонецЕсли
    КонецПроцедуры
    
    Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Источник=»Message1C» Тогда
    Если Событие=»Close» Тогда
    ЗавершитьРаботуСистемы(Истина,Ложь);
    ИначеЕсли Событие=»FormShow» Тогда
    мОбъектВК.СпрятатьИконкуГлавногоОкна();
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *