editstringlistandcustomdialog - ввод строки или выбор из списка
функция ac_request() с директивой "EditStringListAndCustomDialog" вызывает диалог для выбора нескольких строк.
Формат обращения:
int res = ac_request("EditStringListAndCustomDialog",string smessage, int iTable, string str, int index);
Здесь:
smessage - сообщение в заголовке панели диалога,
iTable - дескриптор таблицы с одной колонкой string - текст для выбора.
Возвращает 0 если пользователь отказался от ввода (нажал кнопку "Отменить", нажал кнопку с крестиком на рамке диалога или клавишу "Esc" на клавиатуре).
Если была нажата клавиша "Ok" то возвращается 1.
str - строка - предустановленное значние.
index - индекс предустановленной строки (если больше 0, то используется он а не str).
Результат получается функцией ac_getstrvalue() - если нужно получить строку или ac_getnumvalue() если нужно получить индекс. Обратите внимание, что если ac_getnumvalue() вернет 0 - то значит пользователь ввел собственный текст, которого точно нет в списке iTable/
Пример.
Получить от пользователя строку из предложенных вариантов или любую другую строку.
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);
}