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