Инфо

Додајте ставке у ТПопУп Делпхи мени

Додајте ставке у ТПопУп Делпхи мени

Када радите са менијима или менијима ПопУп у Делпхи апликацијама, у већини сценарија стварате ставке менија у време пројектовања. Свака ставка менија представљена је ТМенуИтем Делпхи класом. Када корисник одабере (кликне) на ставку, ОнЦлицк догађај се отвара за вас (као програмер) да бисте схватили догађај и одговорили на њега.

Могуће су ситуације када ставке менија нису познате у време пројектовања, али их треба додати током извођења (динамички тренутачно).

Додајте ТМенуИтем у време трајања

Претпоставимо да постоји ТПопупМену компонента "ПопупМену1" на Делпхи обрасцу, да бисте додали ставку у скочни мени, могли бисте да напишете код као:

вар
менуИтем: ТМенуИтем;
започети
менуИтем: = ТМенуИтем.Цреате (ПопупМену1);
менуИтем.Цаптион: = 'Ставка је додата у' + ТимеТоСтр (сада);
менуИтем.ОнЦлицк: = ПопупИтемЦлицк;
  // додијелите му прилагођену цијелу вриједност ...
менуИтем.Таг: = ГетТицкЦоунт;
ПопупМену1.Итемс.Адд (менуИтем);
крај;

Напомене

  • У горњем коду једна је ставка додана компоненти ПопупМену1. Имајте на уму да смо доделили вредност целог броја Ознака својство. Својство Таг (има га свака Делпхи компонента) дизајнирано је тако да омогућава програмеру да додијели произвољну цјелинску вриједност похрањену као дио компоненте.
  • Тхе ГетТицкЦоунт АПИ функција преузима број милисекунди који су прошли од покретања система Виндовс.
  • За програмски програм онЦлицк доделио нам је "ПопупИтемЦлицк" - име функције са потписом * исправан *.

поступак ТМенуТестФорм.ПопупИтемЦлицк (пошиљалац: ТОбјецт);
вар
менуИтем: ТМенуИтем;
започети
   ако не (Пошиљалац је ТМенуИтем) онда
   започети
СховМессаге ('Хм, ако ово није позвао Цлицк Мену, ко је то позвао ?!');
СховМессаге (Сендер.ЦлассНаме);
     излаз;
   крај;
менуИтем: = ТМенуИтем (пошиљалац);
СховМессаге (Формат ('Кликнута на'% с ', ТАГ вредност:% д', менуИтем.Наме, менуИтем.Таг));
крај;

Важно

  • Када се кликне динамички додата ставка, извршиће се „ПопупИтемЦлицк“. Да бисмо разликовали једну или више додатих ставки током извођења (све извршење кода у ПопупИтемЦлицк), можемо користити параметар Сендер:

Метода "ПопупИтемЦлицк" прво провјерава да ли је пошиљалац заправо ТМенуИтем објект. Ако се метода извршава као резултат менија ОнЦлицк хандлер за обраду догађаја, једноставно приказујемо дијалошку поруку са ознаком која се додељује када је ставка менија додана у мени.

Прилагођени стринг-ин ТМенуИтем

У стварним апликацијама можда / ће вам требати већа флексибилност. Рецимо да ће свака ставка „представљати“ веб страницу - потребна је стринг вриједност да би се држала УРЛ веб странице. Када корисник одабере ову ставку, можете отворити задани веб претраживач и доћи до УРЛ адресе додељене ставци менија.

Ево прилагођене класе ТМенуИтемЕктендед опремљене прилагођеним низом својства "Валуе":

тип
ТМенуИтемЕктендед = класа(ТМенуИтем)
  приватни
фВалуе: низ;
  објављено
    својство Вредност: читање низа фВалуе писати фВалуе;
  крај;

Ево како додати ову „проширену“ ставку менија у ПоупМену1:

вар
менуИтемЕк: ТМенуИтемЕктендед;
започети
менуИтемЕк: = ТМенуИтемЕктендед.Цреате (ПопупМену1);
менуИтемЕк.Цаптион: = 'Проширено је додато у' + ТимеТоСтр (сада);
менуИтемЕк.ОнЦлицк: = ПопупИтемЦлицк;
   // додијелите му прилагођену цијелу вриједност ...
менуИтемЕк.Таг: = ГетТицкЦоунт;
   // овај може чак и да садржи вредност низа
менуИтемЕк.Валуе: = '//делпхи.абоут.цом';
ПопупМену1.Итемс.Адд (менуИтемЕк);
крај;

Сада "ПопупИтемЦлицк" мора бити модификован да би правилно обрађивао ову ставку менија:

поступак ТМенуТестФорм.ПопупИтемЦлицк (пошиљалац: ТОбјецт);
вар
менуИтем: ТМенуИтем;
започети
   //… исто као пре
   ако пошиљалац је ТМенуИтемЕктендед онда
   започети
СховМессаге (Формат ('Охохо проширена ставка ... овде је вредност низа:% с', ТМенуИтемЕктендед (пошиљалац) .Валуе));
   крај;
крај;

То је све. На вама је да проширите ТМенуИтемЕктендед према вашим потребама. Стварање прилагођених Делпхи компоненти је где потражити помоћ у креирању сопствених класа / компоненти.

Белешка

Да бисте заправо отворили задани веб претраживач, можете користити вредност Валуе као параметар функције СхеллЕкецутеЕк АПИ.