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

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

Обращение к TMenuItem [D7, WinXP]


Wood ©   (2004-11-07 11:48:00) 

Пожалуйста, помогите.
Создаю в run time пункты меню, присваиваю NMenu.name:='nm0'. Во время выполнения программы пытаюсь найти (обратиться) к новому пункту меню: if TmenuItem(FindComponent('nm0'))<> nil. А он все равно равен nil.В чем ошибка?
Спасибо.


Wood   (2004-11-07 18:34:00) [1]

>Defunct [13]
Посмотрю, спасибо


Defunct   (2004-11-07 17:33:00) [2]

> Wood

вот вам примерчик, изучайте:

procedure TForm1.Button1Click(Sender: TObject);
var M : TMenuItem;
   ComponentName : String;
begin

 M := TMenuItem.Create( Self );
 with M do
 Try
   ComponentName := 'menu'+IntToStr( MenuIdx );
   Name := ComponentName;
   Caption := Name;
   Inc(MenuIdx);
   try
     TMenuItem( Self.FindComponent('mFile') ).Add( M );
   except
     ShowMessage('there is no component with mFile name');
   end;
   Show
 except
 end;

 if FindComponent( ComponentName )<>nil then
    ShowMessage('there is '+ ComponentName )
end;


Wood   (2004-11-07 14:52:00) [3]

Удалено модератором


Wood   (2004-11-07 14:23:00) [4]

Open1 - идентификатор пункта главного меню


Wood   (2004-11-07 14:03:00) [5]

Open1 - пункт главного меню, куда добавляется новый Item. Что тут загадочного. Лучше объясните, что не так?


Anatoly Podgoretsky   (2004-11-07 13:48:00) [6]

Какое то загадочное Open1


Wood   (2004-11-07 13:19:00) [7]

Забыл дописать к процедуре создания
Open1.add(NewItem); //(добавляется в пункт главного меню)
Затем FindComponent() или Open1.FindComponent(name) - получается NIL


Palladin   (2004-11-07 13:16:00) [8]

Я повторяю вопрос. Где он, по твоему мнению, существует?


Wood   (2004-11-07 13:16:00) [9]

Все же, как правильно сделать?
В моем коде такие строки:
procedure....
var NewItem: TMenuItem;
begin
NewItem:=TMenuItem.create(self);
NewItem.name:='nm0';
NewItem.Caption:='New';
end;
Где и как создан этот пункт меню, что я не могу его найти функцией FindComponent(name)?


Wood   (2004-11-07 13:13:00) [10]

Вы говорите загадками. Объясните, пожалуйста


Anatoly Podgoretsky   (2004-11-07 13:04:00) [11]

В том контейнере он не существует


Palladin   (2004-11-07 12:49:00) [12]

где он существует?


Wood   (2004-11-07 12:46:00) [13]

>Palladin [1]
Если компонент TMenuItem создан и у него есть имя (name), то почему он nil? Ведь он существует! Вопрос был "в чем ошибка?"


Palladin   (2004-11-07 12:37:00) [14]

а почему он не должен быть равен nil?


Наверх

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