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

Получить список используемых полей в созданом окне

Добавлено: 12 Февраль 2015, 14:40
gopstop2007
Как получить список имен(переменных) полей описанных в БД для созданного W- окна. С последующим использованием этого списка для обработки по условию указаных полей перед открытием W- окна. Это необходимо, чтобы в зависимости от прав доступа, присвоить свойства (hide,disable) или значения для этих полей. Буду рад любой подсказке.

Получить список используемых полей в созданом окне

Добавлено: 12 Февраль 2015, 16:22
kreator
Чего только люди не хотят? :idied:
Первое. Перед открытием окна ничего, вообще, получить нельзя.
Второе. После открытия. У каждого контрола есть "Use"-значение. Теоретически должно начинаться с 1 (единицы). Практически можно сделать цикл от первого контрола до последнего (только если контролы не создаются динамически). У каждого контрола в зависимости от типа есть свой набор свойств. Честно говоря, сомневаюсь, что, например, если в дизайнере окна кнопка помечена как "?Button1", то это название можно вытянуть.
Третье. Я бы сузил задачу, больно общий механизм. Зачем контролировать панели, группы и т.д. Контролировать кнопки ещё более-менее реально.

Получить список используемых полей в созданом окне

Добавлено: 12 Февраль 2015, 17:04
Дед Пахом
Вообще-то для того шаблоны и придуманы

Получить список используемых полей в созданом окне

Добавлено: 13 Февраль 2015, 3:29
Admin
kreator писал(а): Честно говоря, сомневаюсь, что, например, если в дизайнере окна кнопка помечена как "?Button1", то это название можно вытянуть.
Кто то писал что была недокументированная функция. Yufil кажется. Мне нужно было но так и не воспользовался.
Дед Пахом писал(а): Вообще-то для того шаблоны и придуманы
Именно. Шаблоны - наше все!

Получить список используемых полей в созданом окне

Добавлено: 13 Февраль 2015, 11:45
gopstop2007
kreator писал(а):Чего только люди не хотят? :idied:
Этим и живем, что чего то хотим :cat:
kreator писал(а):Первое. Перед открытием окна ничего, вообще, получить нельзя.
Ну если загнать список контролов через шаблон(template) или еще как... что я и пытаюсь в данной теме узнать от уважаемого сообщества. Если бы кто черканул пару строк такого текста в виде шаблона :)

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

CQ   Queue
Lbl    String(40)
Feq    Long
     End
     
CODE
X# = ?MYF:Field1{PROP:FEQ}
CQ.Lbl = 'MYF:Field1' ! получить метку(label) поля
CQ.Feq = X#
Add(CQ)
и как это вытащить при открытии окна
kreator писал(а):Второе. После открытия. У каждого контрола есть "Use"-значение. Теоретически должно начинаться с 1 (единицы). Практически можно сделать цикл от первого контрола до последнего (только если контролы не создаются динамически). У каждого контрола в зависимости от типа есть свой набор свойств. Честно говоря, сомневаюсь, что, например, если в дизайнере окна кнопка помечена как "?Button1", то это название можно вытянуть.
Ну почему, можно явно назначить номера полей всех элементов управления, которые вы хотите динамически выбирать. Пример: USE(MyVar1,100), USE(MyVar2,101) и т.д. Может возможны варианты о которых я не знаю и кто-то поделится :cat:

Получить список используемых полей в созданом окне

Добавлено: 13 Февраль 2015, 12:47
kreator
А зачем шаблон? После открытия окна и так всё известно. Вот мой пример (реально работает):

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

loop i#=?Файл to ?ПомощьОпрограмме by -1
  if (Есть доступ к пункту)
    i#{prop:Disable} = False
  else
    i#{prop:Disable} = True
  end  
end
"(Есть доступ к пункту)" - условность, на самом деле здесь идёт вызов функции, которая проверяет доступ пользователя к конкретному пункту меню фрейма (естественно, есть в БД таблица с этими данными).
И ещё есть текст, в котором идёт проверка на появление нового пункта меню и автоматического добавления его в БД. Для идентификации использую метку prop:HLP.

Получить список используемых полей в созданом окне

Добавлено: 13 Февраль 2015, 13:56
gopstop2007
Admin писал(а): Кто то писал что была недокументированная функция. Yufil кажется. Мне нужно было но так и не воспользовался.
спасибо за подсказку, вот нашел

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

ClaFieldName(LONG),NAME('Cla$FieldName'),CSTRING,PROC
передаешь ей FEQ поля и она тебе возвращает ?Button1 и т.д
вот еще по теме http://forum.clarionlife.net/phpbb/view ... ?f=1&t=369