![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MainMenu и PageControl
lancomm © (2013-08-27 21:06:00)Доброго вечера. Подскажите как можно реализовать такую задумку.
Есть форма, на форме есть PageControl и три вкладки. На каждой вкладке Есть небольшая таблица и кнопки управления ей. Все кнопки имеют одинаковые названия на всех трех вкладках PageControl.
Хотелось бы все кнопки удалить со всех вкладок и сделать одно MainMenu к примеру, пункты которого работают в зависимости от выбранной вкладки.
lancomm (2013-08-27 23:10:00) [1]Извините за совсем глупый вопрос. Разобрался. Спасибо всем за помощь.
lancomm (2013-08-27 23:04:00) [2]Почти все сделал, по поводу OnChange, если работать с кнопкой, то понятно, к примеру
form2.button1.Caption:='тест';
а как изменить пункт MainMenu?
form2.MainMenu1.???
Германн (2013-08-27 22:38:00) [3]TPageControl.OnChage
lancomm (2013-08-27 22:03:00) [4]Еще такой вопрос, пара пунктов MainMenu должны быть разными в зависимости от выбранной вкладки. Можно ли к примеру на какое то событие PageControl (какое?) повесить изменение Caption пункта меню.
Германн (2013-08-27 21:59:00) [5]Я за вариант Ega23 © (27.08.13 21:21) [1]
Код удобнее читать.
lancomm (2013-08-27 21:47:00) [6]Дошло, извините за тугодумность, мало опыта.
Буду пробовать.
ProgRAMmer Dimonych (2013-08-27 21:40:00) [7]> [3] lancomm © (27.08.13 21:35)
А, ну если обработчики отдельные уже написаны, то по переключению вкладки заменять их. Что-то типа
...
SomeMenuItem1.OnClick := Handler1ForPage1;
SomeMenuItem2.OnClick := Handler2ForPage2;
SomeMenuItem3.OnClick := Handler3ForPage3;
...
Тогда ветвление будет только в одной-единственной процедуре. Вполне удобно.
ProgRAMmer Dimonych (2013-08-27 21:37:00) [8]> [2] lancomm © (27.08.13 21:22)
Если набор действий примерно одинаков — почему бы и не MainMenu? По крайней мере более привычно для среднестатистического пользователя.
В [1] вполне логичное решение предложено. Можно только предложить, если код для операций достаточно сложный и значительно отличается на разных вкладках, вместо if'ов просто написать обработчики для каждого из алгоритмов и переназначать при переключении вкладки. Но обычно [1] вполне достаточно.
lancomm (2013-08-27 21:35:00) [9]Спасибо за подсказку, но не совсем понятно следующее.
По вашему примеру если выбрана первая вкладка, то делать то-то, но я пока не понял следующего, в MainMenu как обработчики событий писать, если каждый пункт у меня свой обработчик в зависимости от вкладки.
Еще раз повторюсь, ни MainMenu ни PageControl не обязательны в проекте, может это как то еще можно реализовать получше.
lancomm (2013-08-27 21:22:00) [10]MainMenu не обязателен если это бред, хотелось бы на каждой вкладке PageControl иметь что-то типа сворачевоемого меню, дабы не захламлять кнопками форму.
Ega23 (2013-08-27 21:21:00) [11]
procedure TForm1.Button1Click(TObject)
begin
if PageControl1.ActivePage = TabSheet1 then
begin
end
else
.....
end;
Ну или по PageControl1.ActivePage.Tag привязаться