Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
8-1068309751
g-l-u-k
2003-11-08 19:42
2004.03.28
TActiveMovie


1-1078835234
vin
2004-03-09 15:27
2004.03.28
Перенаправление вывода не в файл, а в поток в память


14-1077937811
Думкин
2004-02-28 06:10
2004.03.28
28 февраля.


7-1073513396
Кен
2004-01-08 01:09
2004.03.28
Где находится Журнал ? Как его получить и как с ним работать ?


3-1077877254
Алексей
2004-02-27 13:20
2004.03.28
DbGrid выделенные строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский