Еще раз...Множественный выбор в интерфейсе
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Еще раз...Множественный выбор в интерфейсе
Благодарю за подсказку, разбираюсь..
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Еще раз...Множественный выбор в интерфейсе
Итак, новость плохая: в результате "разбирательства" освоить маркер не получилось, непонятки остались.
Новость хорошая: помеченные записи легко выгрузились в Pick благодаря коду, приведённому выше от aleks1232321, за что ему +1. Спасибо KATZ и edward_K, интерфейс заработал.
Новость хорошая: помеченные записи легко выгрузились в Pick благодаря коду, приведённому выше от aleks1232321, за что ему +1. Спасибо KATZ и edward_K, интерфейс заработал.
Re: Еще раз...Множественный выбор в интерфейсе
добрый день!
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?
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?
Re: Еще раз...Множественный выбор в интерфейсе
Интерфейс нерабочий. Множеству записей таблицы persons ты сопоставляешь единственную переменную q123.
Таблице можно сопоставить другую таблицу.
Таблице можно сопоставить другую таблицу.
Re: Еще раз...Множественный выбор в интерфейсе
в чём нерабочесть? окошечко открывается, записи есть, у каждой записи есть поле с выпадающим списком, где я могу выбрать тип карты... маркер запоминает покрашенное, могу получить нрекиoiko писал(а):Интерфейс нерабочий. Множеству записей таблицы persons ты сопоставляешь единственную переменную q123.
Таблице можно сопоставить другую таблицу.
может, сделано и неправильно, тогда подскажите как правильно?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Еще раз...Множественный выбор в интерфейсе
а вы после задания типа карты у нескольких записей, нажмите Ctrl+PgDown ,и, увидите, что ничего не самом деле вы не задали.smmmmm писал(а):oiko писал(а):... у каждой записи есть поле с выпадающим списком, где я могу выбрать тип карты
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Еще раз...Множественный выбор в интерфейсе
Поле с типом картой должно быть вычисляемым выражением, зависящим от persons.nrec или прямым полем в таблице.
Например внешний атрибут через wGetAttr. Если это не поле в таблице persons, вам придется сделать одну из обработок в cmExprFieldChanged, cmCheckField, cmPick. В первом значение будет ExprFieldValue, в последних двух для вычисляемых выражений вам скорей всего придется использовать GetViewerData() - напрямую нельзя обращаться, поскольку это приведет к перерасчету выражения.
Переменные старайтесь называть либо как в доке, либо чуть чуть посложнее чем ggg - мне больше нравятся длинные названия из нескольких слов без пробела, где каждое слово с большой буквы + 1,2 буквы в начале под тип. p- указатель, s - строка, b или bo(от bogetTune привычка) - boolean. Для автопометки это pMarker, pSpMarker. По своей сути объект IMarker - таблица объект и в рамках табличных функций вы можете работать с ней как с любой таблицей - getfirst, getnext, loop, update,insert - все это будет работать. При этом когда вы указываете его в recmarker компилятор в автомате добавляет 2 bounds с этой таблицей. Где то это в vipprogr написано если iMarker поищите. Вот пример правильного обхода выбранных записей
При поиске старайтесь не использовать поля(они же Property ) вне индекса или включайте их в and () внутри (( )). В объекте есть прямая функция ExportToMarker, но на большом кол--ве записей она может тормозить. На iMarker есть еще несколько наследников, в принципе вы можете и свой сделать.
Например внешний атрибут через 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;
}
Код: Выделить всё
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);
}
Re: Еще раз...Множественный выбор в интерфейсе
благодарю за подсказку!
Re: Еще раз...Множественный выбор в интерфейсе
не даёт плюсануть, ибо в прошлый раз вас же плюсовал