Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: 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 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
14-68000
NickBat
2003-07-02 16:52
2003.07.21
Вопросы, вопросы...


14-68069
Mishenka
2003-07-05 03:48
2003.07.21
Где достать рисунок к кнопке добавить?


1-67766
Dmk
2003-07-09 02:56
2003.07.21
Проблема с курсорами


3-67708
Dan
2003-06-27 10:24
2003.07.21
ADO, QReport, SQL и хранимые процедуры


8-67932
Dmitry Silchenko
2003-03-01 19:59
2003.07.21
Не получается