editstringlistdialog - выбор строки из списка
функция 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;