функция 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);

}