Поля в list

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

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

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Поля в list

Сообщение BlazeBio »

Как сделать, чтобы list правильно работал и обрабатывался. Я на написал так:

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

ppstatus.name :[list 0 '',1 'Оформляемый',2 'Корректируемый',3 'Утверждённый'],protect;
Или сколько я понял, что если больше трёх записей, лучше так:

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

ppstatus.name :[list 0 '',1 'Оформляемый',2 'Корректируемый',3 'Утверждённый'],protect,pickbutton;
Суть такова, что табла ppstatus содержит три записи name ('Оформляемый', 'Корректируемый', 'Утверждённый') и хотелось бы, чтобы выбирались именно эти поля из ppstatus.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Поля в list

Сообщение edward_K »

Если вы хотите, чтобы именно из ppstatus.name аля list шла выборка, то ищите quickchoice (например в настройке хозоперации вы набираете в поле счет).
Можно проще без всяких доп.таблиц - просто в главной объявляете поле с типом word.
Нумеровать каждый пункт вовсе не обязательно - просто перечисляете через ",". PickButton тоже лишний наверное.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Поля в list

Сообщение BlazeBio »

Да хотелось бы, чтобы выборка шла по ppstatus.name. Но по QuickChoice ничего не меняется. При выборе значений Утверждённый и Корректируемый, остаётся Оформляемый. :(

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

ppstatus.name :[list 'Оформляемый','Корректируемый','Утверждённый'],protect,quickchoice;

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

		cmPick:
		{
		  Updatetable();
		  case CurField of
			#statname:
			{//message('cmPick');
				pptitle.cppstatus:=ppstatus.atl_nrec;
				update current pptitle;
			  if getfirst ppstatus where((pptitle.cppstatus==ppstatus.atl_nrec))=tsOk
				   {
				   }
			  RescanPanel(#pptitle);
			  RescanPanel(sCorPPlan);

			}
			end;
		}
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Поля в list

Сообщение edward_K »

quickchoice мало указать в атрибутах поля.
Нужны еще обработка cmOpenSearch и спецфейс - для начала поищите в vipprogr.chm - там примеры были.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Поля в list

Сообщение Maverick »

Вообще совместное использование имени логической таблицы и атрибута LIST недопустимо - поведение интерфейса становится непредсказуемым...
Как и советовали - необходимо выбрать один из трех вариантов
а) либо поместить вычисляемую переменную типа word
б) либо поместить выч. переменную/поле лог таблицы и делать передачу параметра (т.е. описывать отработку F3 / PickButton)
в) либо делать обработку быстрого поиска квикчойз...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Поля в list

Сообщение BlazeBio »

Maverick писал(а): а) либо поместить вычисляемую переменную типа word
б) либо поместить выч. переменную/поле лог таблицы и делать передачу параметра (т.е. описывать отработку F3 / PickButton)
в) либо делать обработку быстрого поиска квикчойз...
Сделал через QuickChoice. Работает. :smile:
По этому поводу вопрос: QuickChoice обязательно создавать в отдельном интерфейсе как в vipprogr.chm или всё можно сделать в одном и том же интерфейсе?
А об вариантах a) и б), если можно поподробней.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Поля в list

Сообщение Maverick »

1) можно делать в одном файле. можно в нескольких - вопрос внутренней эстетики и эргономики кода.
2) по поводу а и б

а) Объявляете переменную на уровне вьюхи типа word. Описываете ее в скрине как элемент list. Изменения отлавливаете в событии изменения значения поля. там же можете на основании значения листа переприсвоить это значение другому полю вьюхт/таблицы или вообще вычислить значение на основании значения листа
б) Аналогично. Но вешаете обработку F3 (PickButton). по F3 передаете значение как параметр в свою ф-ю или другой интерфейс (обычно интерфейс выбора). При необходимости делаете вычисления, поиск, отбор, изменение значения листа/др.записи, присвоение.. все что угодно... возвращаете старое или новое значение листа (как заложено вашей логикой).

в случаях а и б нужно юзать в конце ресканпанель таблицы корневой
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Поля в list

Сообщение Screw »

1. List "превращает" целочисленное значение в строковое. Поэтому использовать этот атрибут со строковым полем, как в примере, неразумно: Атлантис, вероятно, будет пытаться преобразовать значение поля в целое число и сопоставить ему текст из своего внутреннего списка. Редактировать такое поле без извращений будет невозможно.

2. Использование атрибута pickbutton совместно с list также бессмысленно: у строки с выпадающим списком рисуется своя собственная кнопочка выбора и предусмотрена соответствующая реакция на ее нажатие.

BlazeBio, сформулируйте, пожалуйста, суть задачи, но только без привязки к конкретным вариантам ее решения (типа list или quickchoice).
Виталий
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Поля в list

Сообщение BlazeBio »

Screw писал(а): BlazeBio, сформулируйте, пожалуйста, суть задачи, но только без привязки к конкретным вариантам ее решения (типа list или quickchoice).
Суть задачи заключается в том, что есть документы по производственным планам. Они имеют три статуса: корректируемый, утверждённый и закрытый. Эти статусы хранятся в таблице ppstatus(поле name). В таблице планов pptitle хранится ссылка на ppstatus.nrec. Необходимо организовать для пользователя выбор статуса в интерфейсе, используя статусы из таблицы ppstatus.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Поля в list

Сообщение Screw »

В таком случае list не нужен. Реализуйте классическую схему с pickbutton и выбором из классификатора. QuickChoice приветствуется.
Виталий
Ответить