CftClub.ru
Клуб специалистов ЦФТ-Банк

Какой вкладке принадлежит GRID?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеПн Фев 20, 2012 13:10   Какой вкладке принадлежит GRID? Ответить с цитатой
Полезность: Нет оценки
Есть несколько вкладок на форме Form1, Form2, Form3 , Form4 ...
Я блокирую все контролы на Form1 скриптом:

for each Ctrl in Form1.Controls
Ctrl.Enabled = false
next

При этом блокируются все контролы типа GRID на всех вкладках Shocked
Только типа GRID! все кнопочки и поля остаются живыми.

Скрипт:
for each Ctrl in Form2.Controls
Ctrl.Enabled = true
next

по идее должен разблокировать все конторлы на Form2, но GRIDы не разблокирует.
Более того, я убрал Form1 в конец вкладок, присвоил ей порядковый = 5 , думал основную форму спрячу...
И выставил первой на показ при запуске Form3.
Так вот при
for each Ctrl in Form3.Controls
Ctrl.Enabled = false
next
тоже блокируются все контролы типа GRID на всех вкладках.
То есть та форма, что при запуске показывается первой оказывается родительницей всех GRIDов в операции??
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Фев 20, 2012 17:52    Ответить с цитатой
Полезность: Нет оценки
А если воспользоваться документированными функциями по блокированию?

Например

Код:
Runtime.Form.DisableForm(Form As Object)
Runtime.Form.EnableForm(Form As Object)


никогда после использования проблем не возникало.
Судя по файлу sql формируемого при сохранении формы.. все элементы принадлежат родительской форме, в том числе и вкладки
Код:
BEGIN
FORMS_MGR.FRM_DROP('78152591');
FORMS_MGR.FRM_CREATE('78152591',3555,8280,'ТЕСТ (Списком)','Form1');
FORMS_MGR.CTL_CREATE('78152591',1,3060,3720,360,2160,'OK','BUTTON','OK',0,1,'','Выполнить операцию',0,'','Ok');
FORMS_MGR.CTL_CREATE('78152591',2,3060,6000,360,2160,'CANCEL','BUTTON','Отмена',0,2,'|V|','Отказ от выполнения',0,'','Cancel');
FORMS_MGR.CTL_CREATE('78152591',3,0,60,3000,8100,'','FRAME','Рамка',0,'','','Рамка',0,'','Frame1');
FORMS_MGR.CTL_CREATE('78152591',4,270,60,2070,7980,'%VAR%.V_RA_OTV_SIGN','GRID','',3,60,'#@#|EA 0|ED 0|','Грид: ТЕСТ',0,'RA_OTV_SIGN','Grid1');
FORMS_MGR.CTL_CREATE('78152591',5,0,0,570,300,'%VAR%.V_RA_OTV_SIGN.USER','GRIDCOL','->',4,'','','Колонка: Пользователь',0,'USER_REF','Gridcol2');
FORMS_MGR.CTL_CREATE('78152591',6,0,300,570,3735,'%VAR%.V_RA_OTV_SIGN.USER.NAME','GRIDCOL','Фамилия Имя Отчество',4,'','','Колонка: Фамилия Имя Отчество',5,'NAME','Gridcol3');
FORMS_MGR.CTL_CREATE('78152591',7,0,4035,570,300,'%VAR%.V_RA_OTV_SIGN.TYPE_SIGN','GRIDCOL','->',4,'','','Колонка: Тип подписи',0,'TYPE_SIGN_REF','Gridcol4');
stdio.put_line_pipe(forms_mgr.check_controls('78152591', true), '0063FB290001');
UPDATE METHODS SET MODIFIED=SYSDATE, user_modified='NNN' WHERE ID='78152591';COMMIT;
END;



Пример использования блокировки вкладки
Код:
Runtime.Form.DisableForm Form1


блокируются все контролы ТОЛЬКО на одной вкладке
_________________
всегда есть как минимум 2 выхода
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеВт Фев 21, 2012 06:02    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:

Судя по файлу sql формируемого при сохранении формы.. все элементы принадлежат родительской форме, в том числе и вкладки


А я вот посмотрел таблицу CONTROLS в БД - там всё как положено.
У вкладок парент - основная форма, у гридов парент вкладки.

Так вот остаётся непонятным что обходит цикл "for each Ctrl in Form1.Controls" ?? Явно не первую форму , а всё что есть в операции.
И использует точно не таблицу CONTROLS, в таблице всё правильно.
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеВт Фев 21, 2012 06:40    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
А если воспользоваться документированными функциями по блокированию?

Например

Код:
Runtime.Form.DisableForm(Form As Object)
Runtime.Form.EnableForm(Form As Object)


блокируются все контролы ТОЛЬКО на одной вкладке


Только после этого гриды невозможно разблокировать :
Runtime.Form.EnableForm(Form2)

Если попадаешь в строчки, где нужно вводить текст или цифры - туда ничего не вводится и из неё уже выйти невозможно, таблица в стороны не скролится...
В общем с этими гридами одни глюки. Непонятно как они обрабатываются .

Более того поведение при Runtime.Form.DisableForm(Form1)
такое же как и при "for each Ctrl in Form1.Controls"
То есть если блокируется вкладка, которая показывается первой при вызове формы, то и все гриды заблокированы остаются.
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеВт Фев 21, 2012 12:04    Ответить с цитатой
Полезность: Нет оценки
Может кому-нить пригодиться.

Короче, методом научных тыканий выяснено:

При проходе по контролам ПЕРВОЙ (и только первой!) вкладки, циклом
Код:
for each Ctrl in Form1.Controls
    Ctrl.Enabled = false
next


он не только гриды Enabled = false делает, но и колонки в нём, при чём обратно в таком же цикле Ctrl.Enabled = true им не присваивает, а открывает только грид.
Если первую вкладку не трогаешь, то всё нормально...

Поэтому было найдено такое решение:

Код:
for each Ctrl in Form1.Controls
            if left(Ctrl.ValidateName,7) <> "Gridcol" then
                   Ctrl.Enabled = false
            end if
         next


то есть перед закрытием проверяем не колонка-ли, соответственно колонку не трогаем. Так сохраняются предустановки редактирования колонок.

В общем - электричество вещь до конца не изученная.

Может кто-нить из ядерщиков ЦФТ разъяснит такое поведение?
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеВт Фев 21, 2012 12:12    Ответить с цитатой
Полезность: Нет оценки
похоже на баг Навигатора.
Зарегьте в ЦФТ ошибку.
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеВт Фев 21, 2012 12:18    Ответить с цитатой
Полезность: Нет оценки
lexus пишет:
похоже на баг Навигатора.
Зарегьте в ЦФТ ошибку.


Пускай это будет фича Mr. Green
Gagana
Участник - экстремал


Вступление в Клуб: 05.06.2008
СообщениеВт Фев 21, 2012 19:16    Ответить с цитатой
Полезность: Нет оценки
Трактор пишет:
lexus пишет:
похоже на баг Навигатора.
Зарегьте в ЦФТ ошибку.


Пускай это будет фича Mr. Green


Лучше зарегте. Будет чем "ядерщикам" заняться полезным.
_________________
Бесит в других? Ищи в себе! )
Трактор
Участник со стажем


Вступление в Клуб: 20.02.2012
СообщениеСр Фев 22, 2012 07:56    Ответить с цитатой
Полезность: Нет оценки
Gagana пишет:

Лучше зарегте. Будет чем "ядерщикам" заняться полезным.

Ага, а то им там заняться совсем нечем Mr. Green
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru