Главная страница
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.06 c
3-1077697926
Atanas
2004-02-25 11:32
2004.03.28
Вычисление ключа


11-1057675007
IronWit
2003-07-08 18:36
2004.03.28
listview как с ним работать


1-1078724715
Артем К.
2004-03-08 08:45
2004.03.28
Как создать свой скролл бар и присобачить его к форме


1-1078919810
Ш-К
2004-03-10 14:56
2004.03.28
Bin to XML


14-1077670639
VID
2004-02-25 03:57
2004.03.28
Люди! Мне нужен это чёртов MUI который русифицирует Windows 2000