21.12.2004, 18:14 | #1 |
Moderator
|
Возникла проблема с активированием определенной вкладки (tab control) на форме при открытии.
До поры до времени эта проблема решалась явным активированием любого контрола на нужной вкладке (навижн сам переключал вкладку). С тех как на одну из вкладок поместили сабформу, содержащую таблицу, при открытии формы всегда открывает эта вкладка и фокус устанавливается на пустую строку - типа готов для ввода. Вопрос: как активировать нужную мне вкладку при открытии? После танцев с бубном созрел (и даже заработал) вариант с таймером (ставится таймер на 1мс, в OnTimer пишется Код: IF Not Flag THEN BEGIN CurrForm.ElementNaVkladke1.ACTIVATE Flag := TRUE; END; Есть идеи? |
|
22.12.2004, 09:13 | #2 |
Участник
|
Попробовал создать такую форму. Все нормально. Открывается нужная закладка.
А подобным образом форма стала себя вести, когда в субформе в явном виде вызывалась активация. Посмотрите, чего там в субформе хорошего происходит. |
|
22.12.2004, 09:47 | #3 |
Участник
|
Самый простой способ, хоть и не совсем правльный
1) Перейти на нужную закладку 2) Выбрать контрол, на который хочешь установить фокус 3) Удалить его 4) Поставить заново (не забыть скопировать код из всяких событий, если он есть конечно).
__________________
С уваженем, rootadmin |
|
22.12.2004, 10:20 | #4 |
Участник
|
Нефига себе самый простой. Лишь бы попрограммить ))
|
|
22.12.2004, 11:07 | #5 |
Участник
|
Как раз тут программить ничего и не надо. Необходимо знать операции копирования и вставки из буфера. Да как контролы вытаскивать на форму...
__________________
С уваженем, rootadmin |
|
22.12.2004, 11:44 | #6 |
NavAx
|
А DelayedInsert у формы, которая сидит в сабформе, если поменять - не поможет?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
22.12.2004, 11:47 | #7 |
Участник
|
DelayedInsert - это из другой песни, насколько я понимаю... Не должен помочь.
__________________
С уваженем, rootadmin |
|
22.12.2004, 12:21 | #8 |
Заноза в заднице
|
Респект автору! У нас с коллегой возникла такая же промблемма. Только ещё могу добавить, что когда в сабформе-табличке на энной вкладке есть записи - вся форма открывается так как нужно. А с проблемой справиться удаётся только, если сабформу сделать недоступной для редактирования, а такой вариант нам совсем не подходит. Редактировать сабформу нужно!
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
22.12.2004, 12:28 | #9 |
Заноза в заднице
|
Да, DelayedInsert мы пробовали. Эффект конечно есть, но с записями там был какой-то казус, сейчас точно не помню. Пришлось вернуть его в исходное состояние....
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
22.12.2004, 12:33 | #10 |
NavAx
|
Вспомнил, откуда у меня мысль про DelayedInsert.
Сам же на Ахфоруме и задавал вопрос про подобную проблему (не знаю, насколько подобную). http://www.axforum.ru/forums/showthread.ph...17355#post17355 Память у меня дырявая, толком не помню, что и как было, но, судя по ответам, помогло
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
22.12.2004, 13:13 | #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 |
|
22.12.2004, 15:29 | #12 |
Заноза в заднице
|
Не прокатывают подобные варианты... Ещё идеи есть у кого?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
22.12.2004, 16:24 | #13 |
NavAx
|
Тупой вариант:
форму, которая сидит в сабформе, сделать нередактируемой, рядом с субформой нарисовать кнопку с кодом CurrForm.subform.FORM.EDITABLE := TRUE; А что с DelayedInsert'ом все-таки не так?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
22.12.2004, 17:46 | #14 |
Заноза в заднице
|
Да вроде всё так! Что-то я сейчас уже не вспомню, что там было не так... Точно: установил DelayedInsert = Да непосредственно в сабформе и активация происходит именно на том контроле, который в свойствах формы указан как ActivateOnOpen. А какие тогда вообще могут быть проблемы с сабформой в таком случае, если одно из полей, выведенных в сабформе - ключевое? Не будет ли при открытии формы вставляться в соответствующую сабформе таблицу, строка с пустым значением? Скорее всего нет, потому что не заполнено ключевое поле в таком случае. Вообще: DelayedInsert что даёт. Из хэлпа можно понять, что данное свойство просто-напросто инициализирует новую запись в таблице, либо после заполнения ключевого поля (Нет), либо после выхода из строки (Да)... Всё?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
17.10.2014, 12:17 | #15 |
Участник
|
Эти все способы не работают. Могу сказать 100% получится если саму сабформу сделать Editable=false, а на OpenForm главной вызвать функцию в сабформе
например SetEditableForm() CurrForm.Editable(true); На главной на OnOpenForm() CurrForm.SubForm1.FORM.SetEditableForm; |
|