![]() |
#1 |
Moderator
|
Возникла проблема с активированием определенной вкладки (tab control) на форме при открытии.
До поры до времени эта проблема решалась явным активированием любого контрола на нужной вкладке (навижн сам переключал вкладку). С тех как на одну из вкладок поместили сабформу, содержащую таблицу, при открытии формы всегда открывает эта вкладка и фокус устанавливается на пустую строку - типа готов для ввода. Вопрос: как активировать нужную мне вкладку при открытии? После танцев с бубном созрел (и даже заработал) вариант с таймером (ставится таймер на 1мс, в OnTimer пишется Код: IF Not Flag THEN BEGIN CurrForm.ElementNaVkladke1.ACTIVATE Flag := TRUE; END; Есть идеи? |
|
![]() |
#2 |
Участник
|
Попробовал создать такую форму. Все нормально. Открывается нужная закладка.
А подобным образом форма стала себя вести, когда в субформе в явном виде вызывалась активация. Посмотрите, чего там в субформе хорошего происходит. |
|
![]() |
#3 |
Участник
|
Самый простой способ, хоть и не совсем правльный
![]() 1) Перейти на нужную закладку 2) Выбрать контрол, на который хочешь установить фокус 3) Удалить его 4) Поставить заново (не забыть скопировать код из всяких событий, если он есть конечно).
__________________
С уваженем, rootadmin |
|
![]() |
#4 |
Участник
|
Нефига себе самый простой. Лишь бы попрограммить ))
|
|
![]() |
#5 |
Участник
|
Как раз тут программить ничего и не надо. Необходимо знать операции копирования и вставки из буфера. Да как контролы вытаскивать на форму...
__________________
С уваженем, rootadmin |
|
![]() |
#6 |
NavAx
|
А DelayedInsert у формы, которая сидит в сабформе, если поменять - не поможет?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#7 |
Участник
|
DelayedInsert - это из другой песни, насколько я понимаю... Не должен помочь.
__________________
С уваженем, rootadmin |
|
![]() |
#8 |
Заноза в заднице
|
Респект автору! У нас с коллегой возникла такая же промблемма. Только ещё могу добавить, что когда в сабформе-табличке на энной вкладке есть записи - вся форма открывается так как нужно. А с проблемой справиться удаётся только, если сабформу сделать недоступной для редактирования, а такой вариант нам совсем не подходит. Редактировать сабформу нужно!
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#9 |
Заноза в заднице
|
Да, DelayedInsert мы пробовали. Эффект конечно есть, но с записями там был какой-то казус, сейчас точно не помню. Пришлось вернуть его в исходное состояние....
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#10 |
NavAx
|
Вспомнил, откуда у меня мысль про DelayedInsert.
Сам же на Ахфоруме и задавал вопрос про подобную проблему (не знаю, насколько подобную). http://www.axforum.ru/forums/showthread.ph...17355#post17355 Память у меня дырявая, толком не помню, что и как было, но, судя по ответам, помогло ![]()
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#11 |
Участник
|
Цитата:
Сообщение от Likefire
Только ещё могу добавить, что когда в сабформе-табличке на энной вкладке есть записи - вся форма открывается так как нужно.
Тогда могу порекоменодвать тот же код <div class='CALtop'>C/AL</div><div class='CAL'>IF Not Flag THEN BEGIN CurrForm.ElementNaVkladke1.ACTIVATE Flag := TRUE; END;</div> Поставить на OnActivate субформы. Но то же самое получается по идее...
__________________
С уваженем, rootadmin |
|
![]() |
#12 |
Заноза в заднице
|
Не прокатывают подобные варианты... Ещё идеи есть у кого?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#13 |
NavAx
|
Тупой вариант:
форму, которая сидит в сабформе, сделать нередактируемой, рядом с субформой нарисовать кнопку с кодом CurrForm.subform.FORM.EDITABLE := TRUE; А что с DelayedInsert'ом все-таки не так?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
![]() |
#14 |
Заноза в заднице
|
Да вроде всё так! Что-то я сейчас уже не вспомню, что там было не так... Точно: установил DelayedInsert = Да непосредственно в сабформе и активация происходит именно на том контроле, который в свойствах формы указан как ActivateOnOpen. А какие тогда вообще могут быть проблемы с сабформой в таком случае, если одно из полей, выведенных в сабформе - ключевое? Не будет ли при открытии формы вставляться в соответствующую сабформе таблицу, строка с пустым значением? Скорее всего нет, потому что не заполнено ключевое поле в таком случае. Вообще: DelayedInsert что даёт. Из хэлпа можно понять, что данное свойство просто-напросто инициализирует новую запись в таблице, либо после заполнения ключевого поля (Нет), либо после выхода из строки (Да)... Всё?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#15 |
Участник
|
Эти все способы не работают. Могу сказать 100% получится если саму сабформу сделать Editable=false, а на OpenForm главной вызвать функцию в сабформе
например SetEditableForm() CurrForm.Editable(true); На главной на OnOpenForm() CurrForm.SubForm1.FORM.SetEditableForm; |
|