27.03.2012, 14:50 | #1 |
Участник
|
Добрый день
Ситуация: есть форма, на которой табконтроль с тремя вкладками. На каждой вкладке - субформа - ссылка на одну и ту же форму, только с разными фильтрами. Имеется кнопень, которая запускает определенные расчеты в зависимости от того, на какой строчке субформы мы в данный момент находимся. Запуск процедуры стало быть производится непосредственно из самой субформы. Вызов процедуры идет по кнопке из основной формы и имеет следующий вид: Код: CurrForm.SubForm.FORM.WorkTime; |
|
27.03.2012, 15:09 | #2 |
Участник
|
А как вы определяете вкладку, когда устанавливаете тот или иной фильтр на субформу?
|
|
27.03.2012, 15:23 | #3 |
Участник
|
|
|
27.03.2012, 16:03 | #4 |
Участник
|
Так значит, это три разные субформы и различать нужно не вкладки, а субформы... у меня вроде где-то есть несколько субформ, посмотрю, как они идентифицируются в дизайнере.
|
|
27.03.2012, 16:25 | #5 |
Участник
|
Вкладки, по крайней мере в 3.7, не имеют идентификаторов. Субформам можно давать разные имена вместо тех, что по умолчанию, тогда (и только) они появляются в списке объектов. Но как вытащить оттуда RECORD и TABLEVIEW, я не нашёл. Хотел сделать на кнопке: SETTABLEVIEW(<таблица из субформы>).
|
|
27.03.2012, 16:29 | #6 |
Участник
|
Цитата:
Сообщение от Alex Che
Вкладки, по крайней мере в 3.7, не имеют идентификаторов. Субформам можно давать разные имена вместо тех, что по умолчанию, тогда (и только) они появляются в списке объектов. Но как вытащить оттуда RECORD и TABLEVIEW, я не нашёл. Хотел сделать на кнопке: SETTABLEVIEW(<таблица из субформы>).
да, может и не принципиально, какая вкладка активна. тогда принципиально, на какой субформе фокус. |
|
27.03.2012, 16:32 | #7 |
Участник
|
Единственное, что приходит в голову - сделать не одну кнопку на общем поле, а на каждой закладке одинаковые кнопки, тогда они должны брать каждая свою субформу (и, соответственно, фильтр?).
|
|
27.03.2012, 17:03 | #8 |
Участник
|
Цитата:
спасибо за идею. |
|
27.03.2012, 17:50 | #9 |
Участник
|
Цитата:
А если уж вы не сможете аргументировать пользователю, что так делать не стоит и наверняка есть другой выход, то сделайте форму на подобии мастера и вместо вкладок кнопки и возьмите за это 100500$. |
|
28.03.2012, 00:38 | #10 |
MCTS
|
В Классической версии помнится делал так - завел на каждой закладке Контрол (кэпшн вроде), сделал его прозрачным (не невидимым).
В триггере онАктивейт контрола написал что-то типа иЗакладка := 1 (для каждой вкладки, свое). Ну а при нажатии кнопки (кнопка была одна) анализировал - что у меня в переменной иЗакладка записано и поступал соотвественно. |
|
31.07.2013, 11:39 | #11 |
Участник
|
И чего не заглянул раньше?
Путем размышлений пришел почти к такому же решению, как и apanko. Только не Контрол, а глобальную переменную ActiveForm. На триггере OnActivateForm() строка ActiveForm :=TRUE; а на триггере OnDeactivateForm() - ActiveForm :=FALSE; На каждой субформе функция retActiveForm() : Boolean со строкой EXIT(ActiveForm); А на нажатие кнопки повесил проверку IF CurrForm.sub31.FORM.retActiveForm() = TRUE THEN //дальше ваш код |
|