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

Вниз

Динамические меню.   Найти похожие ветки 

 
Артёмка   (2009-02-14 03:32) [0]

Всем привет ()
Нужно написать программу , которая будет динамически создавать пункты меню , читая их из INI файла , и , выполнять какое либо действие ( с этим и проблемма , Требуется при нажании , узнать индекс менюшки  ) , вот как я это пытался сделать :


....
var
F:Tinifile;
...

procedure TForm1.Button1Click(Sender: TObject);// Создаю пункты меню... тут всё 100% работает )
var
VAVAVA:TMenuItem;
I:Integer;
begin
F:=Tinifile.Create(Extractfilepath(paramstr(0))+"1.cfg");

for i:=1 to 80 do begin
if F.SectionExists(inttostr(i)) then begin

VAVAVA:=TmenuItem.Create(form1);
vavava.onclick:=Clicked;// присваиваю событие
VAVAVA.Caption:=F.ReadString(inttostr(i),"caption","");
PopupMenu1.Items.Add(VAVAVA);
end;
end;
end;
Procedure Tform1.clicked(sender:Tobject);
var
action:string;
begin
//тут требуется ваша помощь :)
//Тут поидее , нужно узнать на какой пункт меню нажал пользователь(Индекс менюшки)  , и вести чтение из ини файла , в чём я и не смог разобраться , Popupmenu1.items.menuitem всегда равен -1 ,
action1:=F.ReadString(Номер пункта менюшки,"action","");
Shellexecute(handle,"open",pchar(action1),nil,nil,sw_show); // Обработка действия ...

end;


 
Ega23 ©   (2009-02-14 10:22) [1]


> Procedure Tform1.clicked(sender:Tobject);


Обрати внимание на параметр Sender. Прочитай в хелпе что это такое и там же посмотри примеры.
Также рекомендуб вообще весь хелп по TMenuItem просмотреть (там и примеры есть).


 
Игорь ©   (2009-02-14 10:44) [2]

Например так

type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   MenuItem1: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure NewMeniItemClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.NewMeniItemClick(Sender: TObject);
begin
 ShowMessage((Sender as TMenuItem).Caption);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 Item: TMenuItem;
begin
 Item:= TMenuItem.Create(PopupMenu1);
 Item.Caption:= "NEW ITEM";
 Item.OnClick:= NewMeniItemClick;
 PopupMenu1.Items.Add(Item);
end;


 
Ega23 ©   (2009-02-14 11:18) [3]


> Например так


Хочешь твой код в FormCreate чуть-чуть подправлю, и в NewMeniItemClick будет exception валиться?


 
Игорь ©   (2009-02-14 11:20) [4]


> Ega23 ©   (14.02.09 11:18) [3]


Нет


 
Ega23 ©   (2009-02-14 11:22) [5]


> Нет


Тогда в следующий раз думай, прежде чем дать новичку потенциально опасный код.


 
Артёмка   (2009-02-14 12:54) [6]

Всем спасибо ) Разобрался ) :)



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

Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1233246083
AlexDan
2009-01-29 19:21
2009.04.05
ICQ 6.5


2-1234347557
SingleStranger
2009-02-11 13:19
2009.04.05
Динамический массив структур (record) как свойство класса.


11-1199030958
Efir
2007-12-30 19:09
2009.04.05
Библиотека KOLATL


1-1209297887
Volk
2008-04-27 16:04
2009.04.05
помогите


15-1233361254
Riply
2009-01-31 03:20
2009.04.05
Отступы в коде





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский