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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

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

Сообщение gopstop2007 »

Как получить список имен(переменных) полей описанных в БД для созданного W- окна. С последующим использованием этого списка для обработки по условию указаных полей перед открытием W- окна. Это необходимо, чтобы в зависимости от прав доступа, присвоить свойства (hide,disable) или значения для этих полей. Буду рад любой подсказке.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

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

Сообщение kreator »

Чего только люди не хотят? :idied:
Первое. Перед открытием окна ничего, вообще, получить нельзя.
Второе. После открытия. У каждого контрола есть "Use"-значение. Теоретически должно начинаться с 1 (единицы). Практически можно сделать цикл от первого контрола до последнего (только если контролы не создаются динамически). У каждого контрола в зависимости от типа есть свой набор свойств. Честно говоря, сомневаюсь, что, например, если в дизайнере окна кнопка помечена как "?Button1", то это название можно вытянуть.
Третье. Я бы сузил задачу, больно общий механизм. Зачем контролировать панели, группы и т.д. Контролировать кнопки ещё более-менее реально.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

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

Сообщение Дед Пахом »

Вообще-то для того шаблоны и придуманы
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

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

Сообщение Admin »

kreator писал(а): Честно говоря, сомневаюсь, что, например, если в дизайнере окна кнопка помечена как "?Button1", то это название можно вытянуть.
Кто то писал что была недокументированная функция. Yufil кажется. Мне нужно было но так и не воспользовался.
Дед Пахом писал(а): Вообще-то для того шаблоны и придуманы
Именно. Шаблоны - наше все!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

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

Сообщение 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:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

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

Сообщение kreator »

А зачем шаблон? После открытия окна и так всё известно. Вот мой пример (реально работает):

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

loop i#=?Файл to ?ПомощьОпрограмме by -1
  if (Есть доступ к пункту)
    i#{prop:Disable} = False
  else
    i#{prop:Disable} = True
  end  
end
"(Есть доступ к пункту)" - условность, на самом деле здесь идёт вызов функции, которая проверяет доступ пользователя к конкретному пункту меню фрейма (естественно, есть в БД таблица с этими данными).
И ещё есть текст, в котором идёт проверка на появление нового пункта меню и автоматического добавления его в БД. Для идентификации использую метку prop:HLP.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

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

Сообщение gopstop2007 »

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

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

ClaFieldName(LONG),NAME('Cla$FieldName'),CSTRING,PROC
передаешь ей FEQ поля и она тебе возвращает ?Button1 и т.д
вот еще по теме http://forum.clarionlife.net/phpbb/view ... ?f=1&t=369
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить