Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамически создаваемое меню.


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо