Еще раз...Множественный выбор в интерфейсе

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

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

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение zna » Ср сен 12, 2012 16:40

Благодарю за подсказку, разбираюсь..
zna
Местный житель
 
Сообщения: 552
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: Челябинск
Reputation point: 14

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение zna » Пн сен 17, 2012 13:26

Итак, новость плохая: в результате "разбирательства" освоить маркер не получилось, непонятки остались.
Новость хорошая: помеченные записи легко выгрузились в Pick благодаря коду, приведённому выше от aleks1232321, за что ему +1. Спасибо KATZ и edward_K, интерфейс заработал.
zna
Местный житель
 
Сообщения: 552
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: Челябинск
Reputation point: 14

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение smmmmm » Чт сен 10, 2020 19:24

добрый день!
interface DialogTest_prob 'Выбор сотрудников'
var sss:string; qq:longint; ggg:IMarker(marker) new; _nrec:comp;
create view
var q123:integer=1;
as select persons.* from persons
where (('С' == persons.ISEMPLOYEE)) and persons.department=4612057684249321181
order by persons.fio;
browse B;recmarker=ggg;
fields
persons.tabnmb 'Табельный'
('Табельный') : [10], Protect;
persons.fio 'ФИО'
('ФИО') : [50], Protect;
q123 'Тип'
('Тип карты') : [list 1 'Обычная', 2 'ВИП'],protect;
end;
такой вот интерфейс... сделал тут колонку типа выпадающий список, где хочу для каждого помеченного сотрудника выбирать тип банковской карты... потом я могу из маркера вытащить нрек из persons... как вытащить ещё вот это самодельное поле q123?
smmmmm
Посетитель
 
Сообщения: 35
Зарегистрирован: Вт июн 24, 2014 15:48
Reputation point: 0

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение oiko » Пт сен 11, 2020 13:23

Интерфейс нерабочий. Множеству записей таблицы persons ты сопоставляешь единственную переменную q123.
Таблице можно сопоставить другую таблицу.
oiko
Местный житель
 
Сообщения: 409
Зарегистрирован: Вт мар 29, 2005 17:49
Reputation point: 11

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение smmmmm » Пт сен 11, 2020 14:17

oiko писал(а):Интерфейс нерабочий. Множеству записей таблицы persons ты сопоставляешь единственную переменную q123.
Таблице можно сопоставить другую таблицу.

в чём нерабочесть? окошечко открывается, записи есть, у каждой записи есть поле с выпадающим списком, где я могу выбрать тип карты... маркер запоминает покрашенное, могу получить нреки
может, сделано и неправильно, тогда подскажите как правильно?
smmmmm
Посетитель
 
Сообщения: 35
Зарегистрирован: Вт июн 24, 2014 15:48
Reputation point: 0

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение smmmmm » Пт сен 11, 2020 14:33

Изображение
smmmmm
Посетитель
 
Сообщения: 35
Зарегистрирован: Вт июн 24, 2014 15:48
Reputation point: 0

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение Den » Пт сен 11, 2020 15:55

smmmmm писал(а):
oiko писал(а):... у каждой записи есть поле с выпадающим списком, где я могу выбрать тип карты


а вы после задания типа карты у нескольких записей, нажмите Ctrl+PgDown ,и, увидите, что ничего не самом деле вы не задали.
Den
Местный житель
 
Сообщения: 1836
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Reputation point: 60

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение edward_K » Пн сен 14, 2020 19:17

Поле с типом картой должно быть вычисляемым выражением, зависящим от persons.nrec или прямым полем в таблице.
Например внешний атрибут через wGetAttr. Если это не поле в таблице persons, вам придется сделать одну из обработок в cmExprFieldChanged, cmCheckField, cmPick. В первом значение будет ExprFieldValue, в последних двух для вычисляемых выражений вам скорей всего придется использовать GetViewerData() - напрямую нельзя обращаться, поскольку это приведет к перерасчету выражения.
Код: Выделить всё
cmExprFieldChanged:
{
  Case(CurField)Of
    #ExtAttrRegNum:
    {
      if (vSFCanModifySchFact(SchFact.Nrec))
      {
        sSetAttrID(coSchFact, SchFact.nrec, pVA_SCHFACT_RegNum, ExprFieldValue);
        SetModified(True);
        ReScanPanel(tnSchFact);
      }
end;
}

Переменные старайтесь называть либо как в доке, либо чуть чуть посложнее чем ggg - мне больше нравятся длинные названия из нескольких слов без пробела, где каждое слово с большой буквы + 1,2 буквы в начале под тип. p- указатель, s - строка, b или bo(от bogetTune привычка) - boolean. Для автопометки это pMarker, pSpMarker. По своей сути объект IMarker - таблица объект и в рамках табличных функций вы можете работать с ней как с любой таблицей - getfirst, getnext, loop, update,insert - все это будет работать. При этом когда вы указываете его в recmarker компилятор в автомате добавляет 2 bounds с этой таблицей. Где то это в vipprogr написано если iMarker поищите. Вот пример правильного обхода выбранных записей
Код: Выделить всё
if pSpMarker.Count>0
    { //pSpMarker.ExportTo(_Marker_Tmp);
      PushPos(#SpDocs);
      SubBounds(tbRmSpDocs1);
      AddBounds(tbRmSpDocs2);
      _Loop pSpMarker
      { InsertMarker(_Marker_Tmp, pSpMarker.pNRec);
        }
      SubBounds(tbRmSpDocs2);
      AddBounds(tbRmSpDocs1);
      PopPos(#SpDocs);
      ReScanPanel(#SpDocs);
    }

При поиске старайтесь не использовать поля(они же Property ) вне индекса или включайте их в and () внутри (( )). В объекте есть прямая функция ExportToMarker, но на большом кол--ве записей она может тормозить. На iMarker есть еще несколько наследников, в принципе вы можете и свой сделать.
edward_K
Заслуженный деятель интернет-сообщества
 
Сообщения: 5164
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: SPB galaxy spb
Reputation point: 115

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение smmmmm » Вт сен 29, 2020 17:51

благодарю за подсказку!
smmmmm
Посетитель
 
Сообщения: 35
Зарегистрирован: Вт июн 24, 2014 15:48
Reputation point: 0

Re: Еще раз...Множественный выбор в интерфейсе

Сообщение smmmmm » Вт сен 29, 2020 17:53

не даёт плюсануть, ибо в прошлый раз вас же плюсовал :)
smmmmm
Посетитель
 
Сообщения: 35
Зарегистрирован: Вт июн 24, 2014 15:48
Reputation point: 0

Пред.

Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


cron