Страница 1 из 2

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:00
Игорь Столяров
Привет всем ! :)

Есть очередной "детский вопрос" ...

Есть окно, на нем SHEET с несколькими TAB.
При открытии окна, по некоторым условиям, нужно сразу установить
какой-нибудь TAB, отличный от первого.

Сейчас это делается Select(?Tab3) - работает, но вызывает заметное
"моргание" окна при переустановке TAB ... :(

Вопрос: можно ли как-то иначе установить TAB по умолчанию при открытии окна ?
Заранее спасибо. :)

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:29
gopstop2007
до открытия окна, у меня стоит в init после Prepare Alert Keys, вроде ничего не моргает
правда вызов немного другой SELECT(?Sheet1,loc_select_tab1)

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:30
Yufil
Ну, я бы для начала после открытия окна сказал 0{Prop:Buffer} = 1, обычно после этого моргание сильно уменьшается

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:44
Игорь Столяров
gopstop2007 писал(а): до открытия окна, у меня стоит SELECT(?Sheet1,loc_select_tab1)
Очень интересно ... А что до открытия окна разве можно обращаться к экранным полям ?!
Они вообще имеют значения ... ? Мой вариант Select(?Tab3) так точно не работает ... :(
Yufil писал(а): Ну, я бы для начала после открытия окна сказал 0{Prop:Buffer} = 1
Спасибо - это интересно попробовать ...

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:47
Дед Пахом
Есть OPEN(Window), и есть Event:OpenWindow. После OPEN(Window) все контролы уже созданы и проинициализированы.

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:50
Дед Пахом
2-й TAB активен:

Код: Выделить всё

  PROGRAM

  MAP
  END

Window                        WINDOW('Caption'),AT(,,373,193),GRAY,FONT('Microsoft Sans Serif',8)
                                SHEET,AT(9,9,350,172),USE(?SHEET1)
                                  TAB('Tab1'),USE(?TAB1)
                                  END
                                  TAB('Tab2'),USE(?TAB2)
                                  END
                                END
                              END
  CODE
  OPEN(Window)
  SELECT(?TAB2)
  ACCEPT
  END
  
  

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 11:55
Игорь Столяров
Дед Пахом писал(а): 2-й TAB активен:
У меня именно так сейчас и сделано. Но в окне много всего разного (Несколько LIST, куча кнопок и т.д.)
потому при таком варианте смены TAB оно заметно моргает .... :(
gopstop2007 писал(а): до открытия окна,
Проверил:

Код: Выделить всё

  Select(?SheetW,2)
  ! Open the window
  SELF.Open(ProgressWindow)                                ! Open window
Ожидаемо - не работает. :(

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 12:11
kreator
Попробуй так (не факт, что моргать не будет):

Код: Выделить всё

	self.FirstField = ?List2
Где-нибудь в Init оконного менеджера, ?List2 - контрол на нужном табе.
У меня используется такая конструкция, вроде жалоб не было. Но опять же не факт, может ещё что влияет.

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 12:19
gopstop2007
еще раз проверил, работает :) С10 ABC

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 12:22
Ал
Игорь Столяров писал(а): У меня именно так сейчас и сделано. Но в окне много всего разного (Несколько LIST, куча кнопок и т.д.)
потому при таком варианте смены TAB оно заметно моргает .... :(
те. если этот таб открывать по умолчанию первым - все ОК? так может "развести" все таб по разным окнам если столь важно чтоб "не моргало" :?:

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 12:28
kreator
gopstop2007 писал(а): еще раз проверил, работает :) С10 ABC
Только Prepare Alert Keys после открытия окна.

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 13:20
Игорь Столяров
gopstop2007 писал(а): еще раз проверил, работает С10 ABC
Вы же посмотрите код, перед тем как писать ...
Embed [Prepare AlertKey] находится значительно ниже Open(Window) ....
Естественно переключение закладки оператором SELECT() в этом месте прекрасно работает.
Я в вопросе написал, что делаю переключение сразу после открытия окна.

Т.е. сообщение "до открытия окна, у меня стоит в init ..." - неправильно. :(

В общем, похоже современная наука это не лечит, но есть болеутоляющее ( 0{Prop:Buffer} = 1 ) ....
За наводку об этом - спасибо ! Узнал, что-то новое, попробую прикрутить. :)

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 14:33
gopstop2007
Игорь Столяров писал(а):Т.е. сообщение "до открытия окна, у меня стоит в init ..." - неправильно. :(
Извините облажался, поторопился :idied: Бес попутал с EVENT:OpenWindow
Но если поставить сразу после SELF.Open(Window) Message('?'), откроется message, а потом окно. То есть, если я правильно понял окно появляться после EVENT:OpenWindow

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 14:53
Yufil
Можно ещё спрятать окно или задвинуть за край, практически незаметно

Код: Выделить всё

hide(0) ; Select(...) ; unhide(0) 

0{Prop:xpos} = 0{prop:xpos} - 5000; Select(...);  0{Prop:xpos} = 0{prop:xpos} + 5000

Установить TAB по умолчанию

Добавлено: 28 Март 2017, 15:07
Игорь Столяров
Yufil писал(а): Можно ещё спрятать окно или задвинуть за край, практически незаметно
Это уже, что-то из репертуара Дэвида Копперфильда получается ... ;)