ToolButton запомнить выбор при style:=tbsDropDown

Вопросы программирования и использования среды Lazarus.

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

Ответить
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

ToolButton запомнить выбор при style:=tbsDropDown

Сообщение zub »

Чето у меня лыжи не едут... думал это стандартное поведение, но чето ненайду
есть ToolButton с style:=tbsDropDown, ему присвоена менюшка, везде присвоены экшены в качестве обработчиков. Хотелось бы чтобы последний выбраный экшен в меню при нажатии стрелки запоминался в экшене ToolButton и в следующий его можно было быстро повторить нажатием на кнопку, без меню.
Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Сообщение Deimos »

Код: Выделить всё

procedure TForm1.Action1Execute(Sender: TObject);
begin
   showmessage('1');
   toolbutton1.Action:=actionlist1.Actions[0];
end;

procedure TForm1.Action2Execute(Sender: TObject);
begin
  showmessage('2');
  toolbutton1.Action:=actionlist1.Actions[1];
end;

procedure TForm1.Action3Execute(Sender: TObject);
begin
  showmessage('3');
  toolbutton1.Action:=actionlist1.Actions[2];
end;


Так?
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Смысл так, но ActionXExecute не должен знать ниче о том как он вызван. Он просто должен делать свою работу, а кнопка свою.
Увязывать их нельзя т.к. ActionXExecute вызывается и не с кнопки, в моменты когда никаких кнопок впомине нет
Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Сообщение Deimos »

Сидел ковырялся с экшенами. А внутри экшена вообще можно узнать, какой компонент его вызвал?

Добавлено спустя 9 минут 1 секунду:
Вопрос снят.

Код: Выделить всё

actionlist1.Actions[0].ActionComponent


zub писал(а):ActionXExecute не должен знать ниче о том как он вызван


Можно проверить, кто родитель и сделать, как я писал выше, если он менюитем... или так тоже не оно?

Хотя самым правильным было-бы пофиксить компонент "тулбар" на предмет ентой фишки в поведении, что, я согласен с Zub, весьма очевидное поведение...

P.s. Ковырять сам тулбар не очень охота )
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>Можно проверить, кто родитель и сделать, как я писал выше, если он менюитем... или так тоже не оно?
Имхо внутрь этих экшенов с "действием" лазить нестоит. они - "черный ящик". внутрь lcl тоже лезть только хотелось бы только в безвыходной ситуации.
У меня нужда в подобной кнопке временно отпала, но позже всеравно придется делать.
Думаю сделать с привлечением экшена "посредника", который будет управлять кнопкой и дальше вызывать onExecute экшена с "действием".
Получится 1 наследник экшена + процедура добавляющаяя его в меню ToolButton и связи с "реальным" экшеном. При этом и существующий код экшенов не затронется, в лцл не придется ниче править, но зато непоформошлепаешь
Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Сообщение Deimos »

Можно, перманентно, наваять новый компонент, и не лезть в ЛЦЛ... Об этом можно и подумать...

Будешь реализовывать - отпишись, может что и придумаем "коллективным" разумом...
Ответить