Переименование TAction для другой формы


У меня есть 2 формы, которые я хотел бы разделить на одну единственную TActionManager и присвоенную TAction - s.

Первая форма является основной формой-она держит TActionManager, TAction с подписью "действие".

Главное меню Form1 имеет свойство action and menuitem caption, равное "Action A". Form2 включает в себя Form1, а также присваивает действие menuitem и заголовок устанавливается в "действие B".

Во время проектирования все выглядит хорошо-пункты меню названы "действие а" и "действие в" в Форме1 и форме2, и то же самое действие является назначенный. Он также отлично работает во время выполнения (OnExecute правильно обрабатывается для обеих форм).

Однако-во время выполнения элемент меню Form1 имеет заголовок "действие A", а Form2 имеет заголовок "действие", как и заголовок действия.

Я включаю их неправильно, можно ли включить Form1 на Form2, чтобы поделиться действием и изменить заголовок? Это ошибка в D2010 / CB2010?

Пример:

  1. создайте Form1 и Form2 и добавьте главное меню в оба
  2. переместите TActionManager в Form1 и создайте в нем Action1.
  3. назначить пункт меню в Form1 Action1 и после этого изменить заголовок (заголовок теперь отображается жирным шрифтом, указывая на изменение от значения по умолчанию)
  4. назначьте пункт меню в Form2 также Action1 (из Form1 TActionManager), а также измените заголовок по умолчанию.
  5. во время выполнения теперь Form1 изменил заголовок (отличается от Action1.Caption), И Form2 имеет идентичный заголовок к Action1.Подпись хотя подпись должна быть быть новым значением, измененным в шаге 4.
2 4

2 ответа:

Я воспроизвел ваш вопрос, и действительно, это странное поведение. Помимо очевидного вопроса, зачем менять заголовки пунктов меню, должны работать следующие :

Задайте для свойства Action обоих пунктов меню одно и то же действие. Теперь заголовки пунктов меню связаны с заголовками действия и обратите внимание, что они больше не сохраняются (они не выделяются жирным шрифтом в инспекторе объектов). Затем измените заголовки пунктов меню на независимые значения и обратите внимание, что они теперь запоминаются и то, что пункты меню действительно меняются соответствующим образом во время разработки.

, но во время выполнения, заголовок второго пункта действительно следует, что вновь действия. На мой взгляд, этого не должно произойти.

Чего я не воспроизвел, так это невозможности изменить его во время выполнения. Как и ожидалось, работает следующее (Здесь D7):

procedure TForm2.FormCreate(Sender: TObject);
begin
  mnuAction1.Caption := 'Action B';
end;

Вы уверены, что меняете заголовок пунктов меню вместо заголовка действия?

Тактика.Надпись перекрывает TMenuItem.Заголовок, когда действие связано с пунктом меню или когда заголовок действия изменен. Если вы измените заголовок элемента меню в методе загрузки форм, вы сможете иметь разные подписи для обеих форм.