Чето у меня лыжи не едут... думал это стандартное поведение, но чето ненайду
есть ToolButton с style:=tbsDropDown, ему присвоена менюшка, везде присвоены экшены в качестве обработчиков. Хотелось бы чтобы последний выбраный экшен в меню при нажатии стрелки запоминался в экшене ToolButton и в следующий его можно было быстро повторить нажатием на кнопку, без меню.
ToolButton запомнить выбор при style:=tbsDropDown
Модератор: Модераторы
Код: Выделить всё
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;Так?
Смысл так, но ActionXExecute не должен знать ниче о том как он вызван. Он просто должен делать свою работу, а кнопка свою.
Увязывать их нельзя т.к. ActionXExecute вызывается и не с кнопки, в моменты когда никаких кнопок впомине нет
Увязывать их нельзя т.к. ActionXExecute вызывается и не с кнопки, в моменты когда никаких кнопок впомине нет
Сидел ковырялся с экшенами. А внутри экшена вообще можно узнать, какой компонент его вызвал?
Добавлено спустя 9 минут 1 секунду:
Вопрос снят.
Можно проверить, кто родитель и сделать, как я писал выше, если он менюитем... или так тоже не оно?
Хотя самым правильным было-бы пофиксить компонент "тулбар" на предмет ентой фишки в поведении, что, я согласен с Zub, весьма очевидное поведение...
P.s. Ковырять сам тулбар не очень охота )
Добавлено спустя 9 минут 1 секунду:
Вопрос снят.
Код: Выделить всё
actionlist1.Actions[0].ActionComponentzub писал(а):ActionXExecute не должен знать ниче о том как он вызван
Можно проверить, кто родитель и сделать, как я писал выше, если он менюитем... или так тоже не оно?
Хотя самым правильным было-бы пофиксить компонент "тулбар" на предмет ентой фишки в поведении, что, я согласен с Zub, весьма очевидное поведение...
P.s. Ковырять сам тулбар не очень охота )
>>Можно проверить, кто родитель и сделать, как я писал выше, если он менюитем... или так тоже не оно?
Имхо внутрь этих экшенов с "действием" лазить нестоит. они - "черный ящик". внутрь lcl тоже лезть только хотелось бы только в безвыходной ситуации.
У меня нужда в подобной кнопке временно отпала, но позже всеравно придется делать.
Думаю сделать с привлечением экшена "посредника", который будет управлять кнопкой и дальше вызывать onExecute экшена с "действием".
Получится 1 наследник экшена + процедура добавляющаяя его в меню ToolButton и связи с "реальным" экшеном. При этом и существующий код экшенов не затронется, в лцл не придется ниче править, но зато непоформошлепаешь
Имхо внутрь этих экшенов с "действием" лазить нестоит. они - "черный ящик". внутрь lcl тоже лезть только хотелось бы только в безвыходной ситуации.
У меня нужда в подобной кнопке временно отпала, но позже всеравно придется делать.
Думаю сделать с привлечением экшена "посредника", который будет управлять кнопкой и дальше вызывать onExecute экшена с "действием".
Получится 1 наследник экшена + процедура добавляющаяя его в меню ToolButton и связи с "реальным" экшеном. При этом и существующий код экшенов не затронется, в лцл не придется ниче править, но зато непоформошлепаешь
Можно, перманентно, наваять новый компонент, и не лезть в ЛЦЛ... Об этом можно и подумать...
Будешь реализовывать - отпишись, может что и придумаем "коллективным" разумом...
Будешь реализовывать - отпишись, может что и придумаем "коллективным" разумом...
