Форум: "Основная";
Текущий архив: 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