Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Вниз
опять 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 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.315 c