Погледајте своју траку са задацима. Видите подручје где се налази време? Постоје ли још неке иконе? Место се зове Виндовс системска трака. Да ли желите да ставите свој Делпхи тамо је икона апликације? Желите ли да икона буде анимирана - или да одражава стање у вашој апликацији?
Ово би било корисно за програме који се дуго раде без корисничке интеракције (позадински задаци који се обично раде на рачунару цео дан).
Оно што можете да урадите је да ваше Делпхи апликације изгледају као да се минимизирају на ладици (уместо на Трака са задацима, десно до дугмета „Вин Старт“ (Покретање) постављањем иконе у лежиште и истовремено прављења образаца невидљив.
Хајде да га уклонимо
Срећом, креирање апликације која ради у системској траци је прилично лако - потребна је само једна (АПИ) функција, Схелл_НотифиИцон, да би се задатак извршио.
Функција је дефинирана у СхеллАПИ јединица и захтева два параметра. Прва је застава која показује да ли се икона додаје, модификује или уклања, а друга је показивач на ТНотифиИцонДата структуру која садржи информације о икони. То укључује ручку иконе за приказивање, текст који ће се приказати као вршак алата када миш пређе преко иконе, ручка прозора која ће примити поруке иконе и тип поруке коју ће икона послати на ово прозор.
Прво, у приватном одељку вашег основног облика ставите линију:
ТраиИцонДата: ТНотифиИцонДата;
тип
ТМаинФорм = класа(ТФорм)
процедура ФормЦреате (пошиљалац: ТОбјецт);
приватни
ТраиИцонДата: ТНотифиИцонДата;
{Приватне изјаве}јавни{Јавне изјаве}крај;
Затим у главном облику ОнЦреате метода, иницијализирајте структуру података ТраиИцонДата и назовите функцију Схелл_НотифиИцон:
са ТраиИцонДата добегин
цбСизе: = СизеОф (ТраиИцонДата);
Внд: = Ручка;
уИД: = 0;
уФлагс: = НИФ_МЕССАГЕ + НИФ_ИЦОН + НИФ_ТИП;
уЦаллбацкМессаге: = ВМ_ИЦОНТРАИ;
хИцон: = Апликација. Ицон. Ручка;
СтрПЦопи (сзТип, апликација. Наслов);
крај;
Схелл_НотифиИцон (НИМ_АДД, @ТраиИцонДата);
Внд параметар структуре ТраиИцонДата упућује на прозор који прима обавештења повезана са иконом.
ХИцон указује на икону коју желимо да додамо у лежиште - у овом случају се користи главна икона Апликације.
СзТип држи Текттип текст за приказ иконе - у нашем случају наслов апликације. СзТип може да садржи до 64 карактера.
Параметар уФлагс постављен је да каже икони за обраду порука апликације, користи икону апликације и њен врх. Тхе уЦаллбацкМессаге указује на идентификовани апликацијски идентификатор поруке. Систем користи одређени идентификатор за поруке обавијести које шаље прозору идентифицираном од стране Внд-а сваки пут када се догоди догађај миша у ограничавајућем правокутнику иконе. Овај параметар је постављен на константу ВМ_ИЦОНТРАИ дефинисану у интерфејс делу јединице образаца и једнак је: ВМ_УСЕР + 1;
Икону додате у ладицу позивањем Схелл_НотифиИцон АПИ функције. Први параметар "НИМ_АДД" додаје икону у подручје Траи. Преостале две могуће вредности, НИМ_ДЕЛЕТЕ и НИМ_МОДИФИ, користе се за брисање или модификацију иконе у ладици - видећемо како касније у овом чланку. Други параметар који шаљемо Схелл_НотифиИцон је иницијализирана структура ТраиИцонДата.
Узети један
Ако сада покренете свој пројекат, видећете икону поред сата у ладици. Запазите три ствари.
1) Прво, ништа се не догађа када кликнете (или урадите било шта друго) мишем на икону у ладици - још увек нисмо креирали процедуру (програм за обраду порука).
2) Друго, на траци задатака постоји дугме (тамо га очигледно не желимо).
3) Треће, када затворите апликацију, икона остаје у ладици.
Узети два
Решимо то уназад. Да бисте икону уклонили из лежишта приликом напуштања апликације, морате поново позвати Схелл_НотифиИцон, али са НИМ_ДЕЛЕТЕ као првим параметром. То радите у програму ОнДестрои евент хандлер за главни образац.
процедура ТМаинФорм. ФормДестрои (пошиљалац: ТОбјецт);
започети
Схелл_НотифиИцон (НИМ_ДЕЛЕТЕ, @ТраиИцонДата);
крај;
Да бисте сакрили апликацију (дугме апликације) из траке задатака, користићемо једноставан трик. У изворни код Пројекта додајте следећи ред: Апликација. СховМаинФорм: = Нетачно; пре апликације. ЦреатеФорм (ТМаинФорм, МаинФорм); Е.г нека изгледа овако:
...
започети
Апликација. Иницијализирати;
Апликација. СховМаинФорм: = Нетачно;
Апликација. ЦреатеФорм (ТМаинФорм, МаинФорм);
Апликација. Трцати;
крај.
И на крају, да би наша икона ладице реаговала на догађаје миша, потребно је да креирамо поступак руковања порукама. Прво, изјављујемо поступак руковања порукама у јавном делу декларације обрасца: процедура ТраиМессаге (вар Мсг: ТМессаге); порука ВМ_ИЦОНТРАИ; Друго, дефиниција овог поступка изгледа као:
процедура ТМаинФорм. ТраиМессаге (вар Мсг: ТМессаге);
почетна Мсг.лПарам од
ВМ_ЛБУТТОНДОВН:
започети
СховМессаге („Лево притиснуто дугме“)
- ПОКАЖЕМ ОБРАЗАЦ! ');
МаинФорм. Прикажи;
крај;
ВМ_РБУТТОНДОВН:
започети
СховМессаге („Десно је притиснуто дугме)
- сакријмо образац! ');
МаинФорм. Сакрити;
крај;
крај;
крај;
Овај поступак је осмишљен да обрађује само нашу поруку, ВМ_ИЦОНТРАИ. Вриједност ЛПарам узима из структуре порука која нам може дати стање миша након активирања поступка. Ради једноставности управљаћемо само левим мишем према доле (ВМ_ЛБУТТОНДОВН) и десним мишем према доле (ВМ_РБУТТОНДОВН). Кад се лево дугме миша спусти на икону, приказујемо главни образац, а када притиснемо десно дугме сакривамо га. Наравно, постоје и друге поруке за унос миша са којима можете руковати у процедури, као што су, дугме горе, двоструки клик на дугме итд.
То је то. Брзо и лако. Затим ћете видети како анимирати икону у ладици и како та икона одражава стање ваше апликације. Чак штавише, видећете како да прикажете скочни мени у близини иконе.