Гость
Форумы / [игнор отключен] [закрыт для гостей] / Фигня с Доступность() / 7 сообщений из 7, страница 1 из 1
18.07.2008, 15:03
    #35439597
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Хочу сделать некоторые элементы диалога на форме доступными/недоступными в зависимости от действий пользователя.
Написал процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Процедура ДоступНомерПП(ТипП)
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
  	Форма.СписокПП.Доступность( 0 );    
 	Форма.КнопкаУдал.Доступность( 0 );    
 Иначе
 	Форма.ПолеПП.Доступность( 1 );
  	Форма.СписокПП.Доступность( 1 );         
  	Форма.КнопкаУдал.Доступность( 1 );    
  КонецЕсли;	
КонецПроцедуры

Глюк в том, что после того как элемент стал "недоступным", обратно "достпным" он становиться категорически не хочет. Версия 1С 7.70.027. Как-нибудь обойти это можно?
...
Рейтинг: 0 / 0
18.07.2008, 15:21
    #35439662
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Оооо, это у меня беда с переключателями оказалась. 2 переключателя объеденены в одну группу. У каждого переключателя своя формула, а вызывается только формула первого переключателя из группы - будем переделывать.
...
Рейтинг: 0 / 0
19.07.2008, 22:52
    #35441014
Supra93
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
SergeySVХочу сделать некоторые элементы диалога на форме доступными/недоступными в зависимости от действий пользователя.
Написал процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Процедура ДоступНомерПП(ТипП)
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
  	Форма.СписокПП.Доступность( 0 );    
 	Форма.КнопкаУдал.Доступность( 0 );    
 Иначе
 	Форма.ПолеПП.Доступность( 1 );
  	Форма.СписокПП.Доступность( 1 );         
  	Форма.КнопкаУдал.Доступность( 1 );    
  КонецЕсли;	
КонецПроцедуры

Глюк в том, что после того как элемент стал "недоступным", обратно "достпным" он становиться категорически не хочет. Версия 1С 7.70.027. Как-нибудь обойти это можно?
Интересная логика...
Код: plaintext
1.
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
Код: plaintext
1.
 Иначе //ТипП= 0 
 	Форма.ПолеПП.Доступность( 1 );
...
Рейтинг: 0 / 0
20.07.2008, 01:32
    #35441074
Provod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Короче я всегда в 7.7 делал так:

Чтобы все работало как часы нужно
1)Разместить на форме вычисляемое поле результатом работы которого должна быть функция
2)В функции строчка кода такая:

Функция Доступность()
Доступность = ?(КакоетоУсловиеВыполнениеКоторогоДаетДоступКЭлементам,1,0);

//Далее тупо

Форма.Кнопка.Доступность(Доступность);
Форма.Кнопка1.Доступность(Доступность);
Форма.Кнопка2.Доступность(Доступность);

Возврат ("");
КонецФункции

//Работает быстро и всегда правильно!
//
...
Рейтинг: 0 / 0
22.07.2008, 16:45
    #35445261
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Спасибо, с Доступностью разобрался.

Теперь следующая заморочка вокруг которой я хожу уже второй день:
Есть Поле (ПолеПП), куда пользователь вводит данные (номера), нажимает Enter, срабатывает простая процедура:
Код: plaintext
1.
2.
3.
4.
5.
Процедура ВводвПолеПП()
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = "";    
КонецПроцедуры
которая добавляет в Список новую строку с данными. Фокус при этом убегает на Список, а очень бы хотелось вернуть его обратно на ПолеПП.
Что уже пробовал:
- В процедуре ВводвПолеПП() активный элемент все еще ПолеПП, фокус убегает на Список после окончания процедуры, поэтому активизировать что-то бесполезно.
- тупо ставил строку "Активизировать("ПолеПП");" в процедуру, которая вызывалась из формул Списка - никакого эффекта.
- единственный вариант который типо работает, это когда процедура со строкой Активизировать("ПолеПП"); вызывается при нажатии на какую-нибудь кнопку - но тогда теряется весь смысл, ведь фокус должен сам автоматом возвращаться после Enter на ПолеПП.
...
Рейтинг: 0 / 0
23.07.2008, 11:38
    #35446539
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Единственное что пока смог сделать - пользователю теперь нажимает 2 раз Enter и фокус возвращается в ПолеПП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Процедура ВводвПолеПП()
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = ""; 
  ПолеППввод =  1 ;
КонецПроцедуры

Процедура фыв() 
  Если ПолеППввод> 0  Тогда
  	   ПолеППввод =  0 ;
  	   Активизировать("ПолеПП");
  КонецЕсли;
КонецПроцедуры

Процедура фыв() прописана в формуле СписокПП и вызывается когда в списке нажимают Enter(или клик мыши). Чтобы отличить простые нажатия Enter, от тех которые когда пользователь перескочил в список после ввода данных в ПолеПП - пришлось ввести дополн. переменную - ПолеППввод
...
Рейтинг: 0 / 0
23.07.2008, 17:54
    #35448003
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фигня с Доступность()
Вообщем вот так обошел проблему с фокусом, добавив в выше указанный код эмуляцию нажатия клавиши Enter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Процедура фыв() 
  Сообщить("dfgdfgfd - " + ПолеППввод);	
  Если ПолеППввод> 0  Тогда
  	   ПолеППввод =  0 ;
  	   Активизировать("ПолеПП");
  КонецЕсли;
КонецПроцедуры

Процедура ВводвПолеПП()
  Перем WshSell;
  
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = ""; 
  ПолеППввод =  1 ;  
  // эмулируем нажатие Enter'а
  WshSell = СоздатьОбъект("WScript.Shell");
  WshSell.SendKeys("{ENTER}");			 
КонецПроцедуры
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Фигня с Доступность() / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]