Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

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

 
Demand2k ©   (2004-03-10 15:34) [0]

Подскажите кто-нибудь... Я динамически создаю элементы Popupmenu(например в соответствии с названиями файлов в папке). Как отловить щелчок мыши на этих элементах??


 
Игорь Шевченко ©   (2004-03-10 15:44) [1]

type
 TMyForm = class(TForm)
 private
   ...
   procedure MyFileNameClick(Sender: TObject);
   ...
 end;

Item.OnClick := MyFileNameClick


 
Demand2k ©   (2004-03-10 20:26) [2]

Чё-то неполучается!


 
Алхимик ©   (2004-03-10 20:34) [3]

Коду мне, коду...

---
NLHD


 
wisekaa ©   (2004-03-10 20:51) [4]

type
fmMy = class (TForm)
 procedure miMgAllClick(Sender: TObject);
end;
...
aQry.Open;
while not aQry.Eof do begin
  mi:=TMenuItem.Create(self);
  mi.Caption:=aQry.FieldByname("name").AsString;
  mi.Name:="miMy_"+IntToStr(aQry.FieldByname("n_id").AsInteger);
  mi.OnClick:=miMyAllClick;
  miMy.Add(mi);
  aQry.Next;
 end;
aQry.Close;
...
procedure TfmMy.miMgAllClick(Sender: TObject);
var
index, gindex: integer;
nid: string;
begin
if not (sender is TMenuItem) then Exit;
{Помести сюда код обработки меню;}
end;


 
Алхимик ©   (2004-03-10 21:10) [5]

И что не получается?
Опять телепатить?
mi сколько раз создаёшь?
Name зачем?
...
var
...
 m1,m2 : TmenuItem;
 m1:=TMenuItem.Create(self);
 m1.Caption:="111";
 m1.OnClick:=MyClick;
 PopupMENU1.Items.Add(m1);
 m2:=TMenuItem.Create(self);
 m2.Caption:="222";
 m2.OnClick:=MyClick;
 PopupMENU1.Items.Add(m2);
...


procedure TForm1.MyClick(sender: TObject);
begin
  ShowMessage((Sender As TmenuItem).Caption);
end;


---
NLHD


 
Юрий Зотов ©   (2004-03-10 21:20) [6]

> Алхимик ©   (10.03.04 21:10) [5]

Пременная m2 не требуется. Можно создавать сколько угодно пунктов, используя только m1.

while еще_не_надоело do
begin
 m1 := TMenuItem.Create(Self);
 m1.Caption := "что_то";
 m1.OnClick := что-то;
 PopupMenu1.Items.Add(m1);
end;


 
Алхимик ©   (2004-03-10 21:30) [7]


> [6] Юрий Зотов ©   (10.03.04 21:20)
> > Алхимик ©   (10.03.04 21:10) [5]
>
> Пременная m2 не требуется. Можно создавать сколько угодно
> пунктов, используя только m1.


Согласен


 
wisekaa ©   (2004-03-10 23:52) [8]


> Алхимик ©   (10.03.04 21:10) [5]

У меня всё получаеться, а привел я код не тебе, а человеку который задавал вопрос!

> Name зачем?

А Name мне нужен, т.к. в обработке OnClick у меня работа посерьезнее ShowMessage("").


 
TUser ©   (2004-03-11 07:04) [9]

Не могу, конечно, сомневаться в авторитете [6], но насколько я помню, вторая переменная нужна. Я когда-то добавлял так пункты в меню, если эта переменная уже добавлена, то второй раз добавлять ее нельзя. И вообще, если с ней что-то сделать (напр. изменить caption), то изменения каснуться дабавленного пункта в меню - это он и есть. Поэтому надо m2, если хотим добавлять 2 пункта. Если я ошибаюсь - поправьте, plz.


 
MBo ©   (2004-03-11 07:17) [10]

>TUser
Ты неправ, дополнительная переменная не нужна, да и имеющаяся - лишь для удобства. Ведь можно и вообще без нее обойтись (хотя пример надуманный):

PopupMenu1.Items.Add(TMenuItem.Create(Self));
with PopupMenu1.Items[PopupMenu1.Items.Count-1] do
 Caption:="Item"+IntToStr(PopupMenu1.Items.Count-1);


 
Юрий Зотов ©   (2004-03-11 07:20) [11]

> TUser ©   (11.03.04 07:04) [9]

> Поэтому надо m2, если хотим добавлять 2 пункта

А если мы хотим добавить 100 пунктов, то... ???

Что касается остального... сорри, но возникает вопрос - Вы понимаете, что такое указатель? Похоже, что не очень.

Короче, проверьте сами.

procedure FormCreate(Sender: TObject);
var
 i: integer;
 m1: TMenuItem
begin
 for i := 0 to 9 do
 begin
   m1 := TMenuItem.Create(Self);
   m1.Caption := IntToStr(i);
   m1.OnClick := MenuItemClick;
   PopupMenu1.Items.Add(m1)
 end
end;

procedure MenuItemClick(Sender: TObject);
begin
 ShowMesage(TMenuItem(Sender).Caption)
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.032 c
1-1078742202
BKGG
2004-03-08 13:36
2004.03.28
Как узнат имена Interface-ов com обекта.


7-1073758291
_наблюдатель_
2004-01-10 21:11
2004.03.28
MapFIle


1-1078936918
Тимохов
2004-03-10 19:41
2004.03.28
TMetafile


8-1068643415
Artur
2003-11-12 16:23
2004.03.28
Ггрфика. Image.


14-1078051680
ABLE
2004-02-29 13:48
2004.03.28
Синий экран