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

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

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

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

Сообщение zub » 10.10.2016 20:47:28

Чето у меня лыжи не едут... думал это стандартное поведение, но чето ненайду
есть ToolButton с style:=tbsDropDown, ему присвоена менюшка, везде присвоены экшены в качестве обработчиков. Хотелось бы чтобы последний выбраный экшен в меню при нажатии стрелки запоминался в экшене ToolButton и в следующий его можно было быстро повторить нажатием на кнопку, без меню.
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Deimos » 12.10.2016 09:59:21

Код: Выделить всё
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;


Так?
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

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

Сообщение zub » 12.10.2016 10:10:18

Смысл так, но ActionXExecute не должен знать ниче о том как он вызван. Он просто должен делать свою работу, а кнопка свою.
Увязывать их нельзя т.к. ActionXExecute вызывается и не с кнопки, в моменты когда никаких кнопок впомине нет
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Deimos » 13.10.2016 20:05:23

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

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

Код: Выделить всё
actionlist1.Actions[0].ActionComponent


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


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

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

P.s. Ковырять сам тулбар не очень охота )
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

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

Сообщение zub » 13.10.2016 21:16:36

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

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

Сообщение Deimos » 13.10.2016 21:37:00

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

Будешь реализовывать - отпишись, может что и придумаем "коллективным" разумом...
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru