gifts2017

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

Опубликовал Матвей Москальцов (Matveymc) в раздел Программирование - Внешние компоненты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

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

Скачать файлы

Наименование Файл Версия Размер
Конфигурация-пример 34
.zip 930,63Kb
16.03.15
34
.zip 1.0 930,63Kb Скачать
Исходники Delphi XE5 23
.zip 73,56Kb
17.03.15
23
.zip 73,56Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Андрей Акулов (DrAku1a) 17.03.15 02:22
2. Матвей Москальцов (Matveymc) 17.03.15 04:41
(1) DrAku1a, Добавил исходники на Delphi XE5
Steelvan; EmpireSer; Aleksey.Bochkov; +3 Ответить
3. Сергей Вн (EmpireSer) 27.03.15 12:57
Классно, удобно, отлично.
Эх, только как жалко, что это не работает в приложениях, опубликованных через терминал...
4. Владимир Митрофанов (BoBaH) 19.04.16 08:37
Matveymc, а то, что 1С:Предприятие (в частности, конфигурация Документооборот) не находит свернутого в трей приложения и запускает второй (третий и далее по ряду целых чисел) экземпляр программы - баг или фича?
5. Матвей Москальцов (Matveymc) 19.04.16 15:12
(4) BoBaH,
Скорее всего вы создаете несколько экземпляров объекта компоненты. Вот простой пример правильного использования:
В модуле управляемого приложения:
Перем мОбъектВК;

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

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
	Если Источник="Message1C" Тогда
		Если Событие="Close" Тогда
			ЗавершитьРаботуСистемы(Истина,Ложь);
		ИначеЕсли Событие="FormShow" Тогда
		    мОбъектВК.СпрятатьИконкуГлавногоОкна();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа