Вниз
Скачать: CL | DM;

опять PopupMenu   Найти похожие ветки 

← →
AndrewVolkov ©   (2003-07-07 16:21) [0]

Опять ступор.

pmItemList := TMenuItem.Create(Self);
pmItemList.Name:="pmChoice";
pmItemList.Caption := fmList.dbGrid.Columns[fmList.dbGrid.SelectedIndex].Title.Caption+ " "+fmList.dbGrid.SelectedField.Text;
pmItemList.Checked:=True;
pmItemList.OnClick:=aChoiceExecute;
PMPeople.Items.Add(pmItemList);


procedure TfmMain.aChoiceExecute(Sender: TObject);
begin
case pmPeople.Items[???].Checked of




end;

end;


Как узнать Индекс нажатого итема. Я его в рантайме создаю - он может быть любым.
Плиз...хелп ми..


← →
Poirot ©   (2003-07-07 16:24) [1]

А ты по имени его смотри, а лучше Tag используй!


← →
AndrewVolkov ©   (2003-07-07 16:27) [2]

А вот как его по имени то найти??


← →
Smashich ©   (2003-07-07 16:28) [3]

AndrewVolkov © (07.07.03 16:27)
перебирая Iтемы


← →
Smashich ©   (2003-07-07 16:29) [4]

а Sender можно тебе использовать?


← →
NickBat ©   (2003-07-07 16:29) [5]

(Sender as TMenuItem).MenuIndex


← →
Poirot ©   (2003-07-07 16:31) [6]

pmItemList.Name:="pmChoice";
Это имя - типа значит перебором..
А на вашем месте я бы всётаки таг юзал и при клике проверял этот номер... Конечно это зависит от задачи!!!
Хотя по имени помоему еть какойто метод, или кто-то функцию делал - но это сложнее и долше!!! Сделайте чучше через таг...
Да кстати - имя должно быть универсальным!

> TfmMain.aChoiceExecute(Sender: TObject);

(Sender as TMenuItem).tag!!!
.name


← →
Семен Сорокин ©   (2003-07-07 16:31) [7]

NickBat © (07.07.03 16:29)
Sender - TAction


← →
Семен Сорокин ©   (2003-07-07 16:33) [8]

Если у для каждого Item"а - свой Action, то можно приравнять их по Tag"ам - иначе - хранить в какой-то таблице совместимости(массиве, структуре)


← →
Digitman ©   (2003-07-07 16:34) [9]

ты себе усложнил задачу.

достаточно было после создания объекта pmItemList присвоить
pmItemList.Action := aChoice;

значения св-в объекта aChoice (в т.ч. - Checked) автоматически станут значениями одноименных св-в объекта pmItemList, а событию pmItemList.OnClick() будет автоматически назначен обработчик aChoice.OnExecute()

в обработчике же

procedure TfmMain.aChoiceExecute(Sender: TObject);
begin

if TBasicAction(Sender).Checked then
...

end;


← →
NickBat ©   (2003-07-07 16:34) [10]

> Семен Сорокин © (07.07.03 16:31)
Не понял. :))


← →
Семен Сорокин ©   (2003-07-07 16:38) [11]

NickBat © (07.07.03 16:34)
в качестве Sender"а выступает TBasicAction (см. Digitman © (07.07.03 16:34))


← →
NickBat ©   (2003-07-07 16:42) [12]

Не знаю, не знаю. Вопрос был:

Как узнать Индекс нажатого итема. Я его в рантайме создаю - он может быть любым.

По моему мой ответ рабочий.


← →
Digitman ©   (2003-07-07 16:49) [13]


> NickBat


Если у эл-та меню (неважно когда созданного - в ран-тайм или дизайн-тайм) не назначено св-во Action, то твой ответ - рабочий. В противном случае - нет : источником события будет TBasicAction.


← →
AndrewVolkov ©   (2003-07-07 17:03) [14]

Спасибо всем огроменное

(Sender as TMenuItem).MenuIndex

в принципе я думаю мне этого решения хватает


← →
NickBat ©   (2003-07-07 17:50) [15]

> Digitman © (07.07.03 16:49)
По-моему у вопрошающего не было Action.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
14-67973
zep
2003-07-05 23:45
2003.07.21
Разрыв Online


3-67662
Nikolai_S
2003-06-25 20:57
2003.07.21
Помогите с SQL-запросом


14-67966
Peon
2003-07-05 15:36
2003.07.21
Билеты в Московский Энергетический Институт (МЭИ)


1-67860
Кен
2003-07-05 03:19
2003.07.21
Невидимый текстовый курсор в RichEdit


14-68055
Дедов Дмитрий
2003-07-02 18:14
2003.07.21
Просьба. Особенно к Киевлянам.




   Наверх