заголовок про трейПривет.. Если вы это читаете то вам, скорее всего интересно как свернуть свою программу в трей или нужно записывать какие-то данные в буфер данных. Такие мелочи вроде не интересуют начинающего программиста до определённого момента. Вот всяком случае так было у меня:)

Небольшое предисловие.

Для лучшего усвоения материала, я разберу эти две темы на примере. Помните, наверное, я написал две статьи о декодировании штрих-кода полиса ОМС. Там был пример динамической библиотеки *.dll? в которую заложен алгоритм декодирования штрих-кода. Так вот, просто не все пишут на Delphi, кто-то например, использует 1C. Но вот проблема: 1С-среда (назовем ее так :), просто не умеет проводить такие «пертурбации» с данными, что описаны в статье. Вопрос  что делать?

Идею я честно подсмотрел в одном месте.  Суть проста – программа висит в трее и ни как себя не выдает, при этом при сканировании штрих-кода, она распознает данные и «зашвыривает» в системный буфер. Ну а из буфера любая программа может достать эти данные. Прикольно?

Ну что тогда к делу…

Сворачиваем окно в трей.

Начнем с компонентов. Кидаем на форму TrayIcon (Палитра Additional) и PopupMenu (Палитра Standart).

Пример в с компонентами сворачивание в трее
Пример в с компонентами

Собственно на картинке все понятно.  Кроме, наверное скинов, кто не знаком объясню позже подробнее. Пока скажу прменяется, что изменить внешний вид вашей программы. Правда он иногда глючит, но не часто. Да и для жителей СНГ компонент бесплатный.

Зачем нам PopupMenu спросите  вы? Видели хоть раз, когда сворачиваете программу в трей, при нажатии правой кнопкой на иконке появляется меню. Вот это и есть то самое PopupMenu. Для его применения в других местах, нужно указывать область экрана, внутри которой он будет реагировать на клик правой кнопки мыши. В данном случае все проще.  У компонента TrayIcon есть  свойство PopupMenu, туда собственно прописываем наше меню.

С PopupMenu, можно работать как с MainMenu. То есть просто добавляем пункты в визуальном менеджере. Менеджер вызывается двойным кликом по компоненту.

 

Менеджер PopupMenu
Менеджер PopupMenu

Ниже привожу код, который выполняется при выборе меню.

procedure TForm1.N1Click(Sender: TObject);
begin
 Halt;  //Убить прогу
end;

procedure TForm1.N2Click(Sender: TObject);
begin
 Form1.Show;  //Показать окно программы
end;

procedure TForm1.N3Click(Sender: TObject);
begin
 Form1.Hide;  //Скрыть окно программы
end;

procedure TForm1.N4Click(Sender: TObject);
begin                       //Собственно о программе

 ShowMessage('Программа работает с сканерами штрих-кодов через com-порт'+#13+
 'Применяется для расшифровки штрих-кода полиса омс.'+#13+
 'Данные записываются в буфер обмена. Разработчик Разводов В.А. (Shinobi)'+#13+
 'Сайт разработчика: myshinobi.ru');

end;

По сворачиванию в трей: в принципе все просто. Если что пишите))

В буфер заливаем данные…

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

Uses Vcl.ClipBrd; //Не забывает прописывать в ручную

Clipboard.AsText := barcode.PolicyString+'|'+barcode.FirstName+'|'+barcode.LastName+'|'
+barcode.Patronymic+'|'+barcode.Sex+'|'+barcode.Data+'|'
+barcode.Data_End;

В буфер записывается строчка текста в принципе, можно поиграть и записывать не только текст при необходимости. Вот в принципе и все. Напоследок я приложу уже скомпилированный вариант программы  может, кому понадобится.

Скачать программу раскодировки штрих-кода и записи в буфер.

Читайте, применяйте и комментируйте. С уважением, ваш Shinobi.
P.S. Нравится материал. Делитесь в твитере, лайкайте в контакте и так далее. Хочется выразить благодарность — кликай по рекламе. Все спасибо))

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.