Динамическое создание главного меню в кроссплатф. приложении

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Динамическое создание главного меню в кроссплатф. приложении

Сообщение ya_vanka » 08.10.2014 18:42:29

Нужно сосздать главное меню динамически, на этапе выполнения программы. Причем приложение кроссплатформенное (Win + Linux).

Под Win меню создать можно через WinAPI.
А как под Linux?
Может есть пример?
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Динамическое создание главного меню в кроссплатф. прилож

Сообщение alexs » 08.10.2014 19:04:26

Если в Lazars-е - то чем штатный способ черех TMenuItem не устраивает?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Динамическое создание главного меню в кроссплатф. прилож

Сообщение ya_vanka » 08.10.2014 20:18:21

А можно глянуть пример?
К любому окну и в любой момент можно меню добавить?
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Динамическое создание главного меню в кроссплатф. прилож

Сообщение alexs » 08.10.2014 21:28:29

В инете примеров полно для delphi по созданию меню.
В Lazarus-е всё также.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Динамическое создание главного меню в кроссплатф. прилож

Сообщение Sharfik » 08.10.2014 21:31:43

В общих чертах так.
Код: Выделить всё
var
NewMenuItem:TMenuItem;
begin
try
NewMenuItem:=TMenuItem.Create;
NewMenuItem.caption:='blabla';
NewMenuItem.OnClick:=@Процедура обработки кликов
...
//Дальше у менюшки делаем insert/add или что там есть в подсказке.

except
NewMenuItem.Free;
end;
end;

или как тут:
http://forum.vingrad.ru/topic-113983.html
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 759
Зарегистрирован: 20.07.2013 01:04:30

Re: Динамическое создание главного меню в кроссплатф. прилож

Сообщение ya_vanka » 08.10.2014 21:39:42

Спасибо, попробую.

Добавлено спустя 18 часов 5 минут 37 секунд:
Re: Динамическое создание главного меню в кроссплатф. приложении
Не пойму как TMainMenu подцепить к окну имея только Handle окна.

Добавлено спустя 7 часов 47 минут 41 секунду:
Re: Динамическое создание главного меню в кроссплатф. приложении
Возможно я неясно выразился. После создания окна у меня есть лишь его handle.
Окно создается сторонней библиотекой.
Так вот как к этому окну добавить главное меню?
Как создать само меню с пунктами через TMenuItem понятно, а вот как его назначить окну по его handle не пойму.

Добавлено спустя 11 часов 30 минут 15 секунд:
Re: Динамическое создание главного меню в кроссплатф. приложении
Пробую вот такой код, но не работает:

Код: Выделить всё
procedure additem(Owner:TMenuItem; Caption:string);
var
  item : TMenuItem;
begin
  item := TMenuItem.Create(Owner);
  item.Caption := Caption;
  Owner.Add(item);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  FMenu1 : TMainMenu;
begin
  FMenu1 := TMainMenu.Create(nil);

  //FMenu1.HandleNeeded;
  FMenu1.WindowHandle := Self.Handle;

  additem(FMenu1.Items,'Menu item 1');
  additem(FMenu1.Items,'Menu item 2');
  additem(FMenu1.Items,'Menu item 3');
  additem(FMenu1.Items[0],'Sub item 1-1');
  additem(FMenu1.Items[0],'Sub item 1-2');
  additem(FMenu1.Items[1],'Sub item 2-1');
  additem(FMenu1.Items[2],'Sub item 3-1');
  additem(FMenu1.Items[0].Items[0],'Sub Sub item 1');
  additem(FMenu1.Items[0].Items[0],'Sub Sub item 2');
end;
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru