функция ac_request() с директивой "editstringlistdialog" вызывает диалог для выбора строки из списка popup.

Формат обращения:

int res = ac_request("editstringlistdialog",string smessage, int iTable, string sstr);

или

int res = ac_request("editstringlistdialog",string smessage, int iTable, int index);

или

int res = ac_request("editstringlistdialog",string smessage, string savailablelist, string sselected, string sdelimiter);


Здесь:

smessage - сообщение в заголовке панели диалога, 

iTable - дескриптор таблицы, в которой в первой колонке заданы возможные значения для выбора в диалоге.

str - строка, которая будет выбрана в popup элементе диалога;

index - индекс текста строки из таблицы, которая будет выбрана в качестве предустановки в popup элементе диалога.

Обратите внимание, что в ts_table индекспервой строки - 0 а в элементе popup - индекс первой строки - 1. Поэтому 0-я строка из таблицы будет 1-й в элементе popup.В index задается и получается индекс выбора по элементу popup.


savailablelist - список элементов для выбора через разделитель;

sselected - предварительно выбранный элемент;

sdelimiter - разделитель.

 

Возвращает 0 если пользователь отказался от ввода (нажал кнопку "Отменить", нажал кнопку с крестиком на рамке диалога или клавишу "Esc" на клавиатуре).

Если была нажата клавиша "Ok" то возвращается 1.

Результат получается функцией ac_getstrvalue() - если нужно получить строку или ac_getnumvalue() если нужно получить индекс.


Пример 1.

Получить от пользователя выбранную строку из таблицы.Предложить значение "Иванов В.В."

int iTable;
object("create","ts_table",iTable);
ts_table(iTable,"add_column",-1,"string","h1");
ts_table(iTable,"add_row",0,"Иванов В.В.");
ts_table(iTable,"add_row",0,"Петров В.В.");
ts_table(iTable,"add_row",0,"Сидоров В.В.");
string svalue = "Петров В.В.";
int index;
int res = ac_request("editstringlistdialog","Введите ФИО архитектора", iTable, svalue);
if(res == 1)
{
   svalue = ac_getstrvalue();
   index = ac_getnumvalue();
}
coutvar << svalue;
coutvar << index;
object("delete",iTable);


Пример 2


string s = "one;two;three";
string ss = "two";
int iires = ac_request("EditStringListDialog", "Тип линии", s, ss,";");
coutvar<<iires;
coutvar<< ss;
return;