Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 092

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Прошу вашей помощи!
Как динамически создать MainMenu и для него MainMenuItem и сабменюшки?
У меня неполучается с Parent когда создаю Item!

unl0K Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: unl0K (статус: Посетитель)
Вопрос отправлен: 16 ноября 2008, 20:03
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Шичко Игорь

Здравствуйте, AHJIoKeR!
Посмотрите типа такого кода в приложении.
Может подойдет

Приложение:
  1. procedure TForm1.FormActivate(Sender: TObject);
  2. var
  3. main_menu: TMainMenu;
  4. menu_1, sub_1, sub_2: TMenuItem;
  5.  
  6. begin
  7. main_menu:= TMainMenu.Create(self);
  8. main_menu.Name:= 'Main';
  9. menu_1:= TMenuItem.Create(self);
  10. menu_1.Caption:= '222';
  11. sub_1:= TMenuItem.Create(self);
  12. sub_1.Caption:= '333';
  13. sub_2:= TMenuItem.Create(self);
  14. sub_2.Caption:= '444';
  15. main_menu.Items.Add(menu_1);
  16. menu_1.Add(sub_1);
  17. sub_1.Add(sub_2);
  18.  
  19. end;


Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Время отправки: 16 ноября 2008, 21:02
Оценка за ответ: 5

Комментарий к оценке: Спасибо все работает, я увидил свою ошибку!
Я другим методом создавал и родителя определял,а из премера видно что этого делать ненужно!

Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 17 ноября 2008, 01:04; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2008, 20:37 [#1]:

Ну что именно не получается?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 16 ноября 2008, 20:42 [#2]:

уже все неполучается))
вооще немоу создать эти компоненты если можно покажите как это все должно выглядеть!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2008, 20:54 [#3]:

Завтра приду на работу, и, если проблема будет ещё актуальна, напишу тебе пример. Никогда такого не делал (не было причин), но, думаю, это несложно. Пиши письма мелким почерком.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Nasgool

Nasgool (статус: 2-ой класс), 16 ноября 2008, 22:38 [#4]:

Держи простейший пример. Дальше сам разберешся. :)

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus;

type
TItem = class(TMenuItem);
TForm2 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
ItemMain, Item, ItemSub: TMenuItem;

implementation

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);
var
I, J, Q: Integer;
begin
Menu := TMainMenu.Create(Self);
ItemMain := TMenuItem.Create(Self);
Item := TMenuItem.Create(Self);
ItemSub := TMenuItem.Create(Self);
ItemMain.Caption := '1';
Item.Caption := '1.1';
ItemSub.Caption := '1.1.1';
Menu.Items.Add(ItemMain);
Menu.Items.Items[0].Add(Item);
Menu.Items.Items[0].Items[0].Add(ItemSub);
Form2.Paint;
end;

end.


Только на onClose (или по своему усмотрению) нужно освободить память:

ItemMain.Free;
Item.Free;
ItemSub.Free;
Вадим К

Вадим К (статус: Академик), 17 ноября 2008, 01:04 [#5]:

to Nasgool
вот расскажите моему пытливому уму, зачем в верху кода есть строка TItem = class(TMenuItem); Во первых, она точно не нужна, а во вторых, в некоторых случаях она может стать причиной дивных глюков....
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.02 сек.