Имя поля - атрибута

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Имя поля - атрибута

Сообщение Maverick »

Имеется докомпилированный с помощью мастера докомпиляции, интерфейс, в котором есть некий набор собственных полей, вытащенных на интерфейс. Среди них - вытащены и внешние атрибуты и внешние классификации.
Хочется сделать их обработку (показывать или скрывать в зависимости от условий), в общем поиграть их свойствами.
Способ обращения к собственным полям понятен, однако, непонятно как программно обратиться по имени к полю-значению внешнего атрибута, вытащенного в броузер/скрин:


Объект_1

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

      object 'ExtAttr: KLPRICE,281474976711107' : PanelInputLine 
{
...     
        FieldName = 'ExtAttr: KLPRICE,281474976711107';
}

Объект_2

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

object 'ExtAttr: PRICES,281474976711108' : Column
{
...
FieldName = 'ExtAttr: PRICES,281474976711108';
}

....
Хочется собственно следующее: Если объект_1 заполнен, то объект_2 - видим, иначе - невидим...
т.е. реализовать следующую конструкцию

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

Case Объект_1 of 
...
...
else SetFieldState(#Объект_2, sfVisible);

End;
Как это чудо обрабатывать - ума не приложу... :eek:
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

а если попытаться обработать это в самой докомпиляции? т.е. найти событие по аналогу cmCheckField и там уже порулить?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

хм... не представляю каким образом обрабатывать.... ведь нужно будет ловить CurField, а оно наскока помнится в cmCheckField отлавилвается для полей текущей корневой таблицы... а данные поля даже в запросах не участвуют... т.е. корневой не принадлежат...
Перебором делать? тоже не вариант - тупо в разные сессии номер поля будет разным...
Должен быть другой выход...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

попробовал поймать сию конструкцию через

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

If ...
{
SetFieldState(cfsGetAtomCode('ExtAttr: PRICES,281474976711108'),sfVisible);
}
Else
{
ClearFieldState(cfsGetAtomCode('ExtAttr: PRICES,281474976711108'),sfVisible);
};
ничего не получилось...

продолжаю исследования, может на что-либо наткнусь...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

А что мешает просто в докомпилированном фейсе во вьюхе вывести значение

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

Create view
As Select
 oExtAttr.sGetAttrID(coKlPrice,KlPrice.Nrec,281474976711107)
 (FieldName = KlPriceAttr)
;
а потом разбирать именно этот параметр

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

  case KlPriceAttr of
  '1' :{}
  '2' : {}
  else {}
  end;
только тогда в cmCheckField придется постоянно проверять данное значение. т.е. KlPriceAttr будет стоять до Case CurField of.
ну или как вариант - добавлять поля не конфигуратором, а API конфигуратора. тогда уж точно #KlPriceAttr подхватиться
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

2 Ged
В принципе вариант.. почему-то я про него не подумал.

Между тем, Миша Ларин подсказал простой и эффективный способ:
использование cfsSetProp и cfsGetProp для чтения и записи значений свойств. Тогда обращаться к объектам можно по строковому значению.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ответить