![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамически создаваемое меню.
Fenix © (2006-03-11 22:52:00)Добого времени суток.
У меня пару вопросов по созданию динамического меню.
Во 1 когда я создаю меню 2 уровня т.е. File ->, то все норм, но когда я пытаюсь создать меню 3 уровня например File -> Add ->, то выскакивает ошибка.... почуму это может быть?
И 2 вопрос:
Мне нужно к каждой нажатой кнопке прописать обработчик нажатия на эту кнопку. У меня он однообразен:
procedure TForm1.N12Click(Sender: TObject);
begin
LoadForm(n12.caption);
end;
Но это для статического меню.... как сделать так что бы каждому новому пункту был присвоен этот обработчик?
Fenix (2006-03-12 13:49:00) [1]
> Handle
Спс теперь все работает.
Handle (2006-03-12 13:35:00) [2]
MainMenu1.AutoHotkeys:= maManual;
for i:=0 to memo2.Lines.Count-1 do begin
TagMenu[i]:=TMenuItem.Create(Mainmenu1);
MainMenu1.AutoHotkeys:= maManual;
TagMenu[i].OnClick := PopClick;
TagMenu[i].Caption:=memo2.Lines[i];
n12.Add(TagMenu[i]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MainMenu1.AutoHotkeys:= maManual;
end;
Fenix (2006-03-12 13:23:00) [3]
> Почему не помагает то, у меня в переменную s заноситься
> (Sender as Tmenuitem).Caption без символа & ;
А у меня заноситься с ним....
for i:=0 to memo2.Lines.Count-1 do begin
TagMenu[i]:=TMenuItem.Create(Mainmenu1);
TagMenu[i].AutoHotkeys:=maManual;
TagMenu[i].OnClick := PopClick;
TagMenu[i].Caption:=memo2.Lines[i];
n12.Add(TagMenu[i]);
end;
это как я создаю пункты меню (в зависимости от количества строк в Memo2)
Handle (2006-03-12 12:58:00) [4]
> не помогает.....
Почему не помагает то, у меня в переменную s заноситься (Sender as Tmenuitem).Caption без символа & ;
> Это символ типа быстрого выбора по символу...
Это символ который ставиться перед буквой, которая используется для создания Hotkeys(горячие клавиши), совместно с другими клавишами , например Ctrl + буква перед которой стоит & , нажми Ctrl + Alt + Delete поймёшь что такое Hotkeys.
Fenix (2006-03-12 12:34:00) [5]
> Handle (12.03.06 12:28) [4]
> Object Inspector\AutoHotkeys\maManual
> или MainMenu1.AutoHotkeys:= maManual;
не помогает.....
Это символ типа быстрого выбора по символу...
Handle (2006-03-12 12:28:00) [6]Object Inspector\AutoHotkeys\maManual
или
MainMenu1.AutoHotkeys:= maManual;
Fenix (2006-03-12 12:14:00) [7]s := (Sender as Tmenuitem).Caption;
В переменной S заноситься еще один ненужный символ &. Как его избежать?
[lamer]barmaglo (2006-03-11 23:30:00) [8]До чего же ленивые юзеры пошли...
FAQ: http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625051&n=19
Handle (2006-03-11 23:22:00) [9]
> File -> Add ->, то выскакивает ошибка.... почуму это может
> быть?
Где код то?
> Но это для статического меню.... как сделать так что бы
> каждому новому пункту был присвоен этот обработчик?
type
TForm1 = class(TForm)
Button1: TButton;
MainMenu1: TMainMenu;
procedure popClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s: string;
NewItem: TMenuItem;
implementation
{$R *.dfm}
procedure TForm1.popClick(Sender: TObject);
begin
s := (Sender as TMenuItem).Caption;
LoadForm(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NewItem := TMenuItem.Create(MainMenu1);
NewItem.Caption := 'NewItem';
NewItem.OnClick := PopClick;
MainMenu1.Items.Insert(0,NewItem);
end;