editstringlistandcustomdialog - ввод строки или выбор из списка
функция ac_request() с директивой "EditStringListAndCustomDialog" вызывает диалог для выбора нескольких строк.
Формат обращения:
int res = ac_request("EditStringListAndCustomDialog",string smessage, int iTable, string str);
или
int res = ac_request("EditStringListAndCustomDialog",string smessage, int iTable, int index);
или
int res = ac_request("EditStringListAndCustomDialog",string smessage, string savailablelist, string sselected, string sdelimiter);
Здесь:
smessage - сообщение в заголовке панели диалога,
iTable - дескриптор таблицы с одной колонкой string - текст для выбора.
Возвращает 0 если пользователь отказался от ввода (нажал кнопку "Отменить", нажал кнопку с крестиком на рамке диалога или клавишу "Esc" на клавиатуре).
Если была нажата клавиша "Ok" то возвращается 1.
str - строка - предустановленное значение.
savailablelist - список элементов для выбора через разделитель;
sselected - предварительно выбранный элемент и возвращаемое значение;
sdelimiter - разделитель.
index - индекс предустановленной строки;
Результат получается функцией ac_getstrvalue() - если нужно получить строку или ac_getnumvalue() если нужно получить индекс. Обратите внимание, что если ac_getnumvalue() вернет 0 - то значит пользователь ввел собственный текст, которого точно нет в списке iTable или savailablelist;
Пример.
Получить от пользователя строку из предложенных вариантов или любую другую строку.
int iTable;
object("create", "ts_table", iTable);
ts_table(iTable, "add_column", -1, "string", "col");
ts_table(iTable, "add_row", 0, "Row 1");
ts_table(iTable, "add_row", 0, "Row 2");
ts_table(iTable, "add_row", 0, "Row 3");
bool bres = ac_request("EditStringListAndCustomDialog","Enter value", iTable, "Row 0");
if(bres)
{
string sres = ac_getstrvalue();
int ires = ac_getnumvalue();
coutvar << sres;
coutvar << ires;
object("delete", iTable);
}
Пример 2
string s = "one;two;three";
string ss = "two";
int iires = ac_request("EditStringListAndCustomDialog", "Тип линии", s, ss,";");
coutvar<<iires;
coutvar<< ss;
return;