ObjectARX, AutoCAD. Среда программирования библиотеки C++

Изменение Режимов Повторного вызова и Значений


При повторном вызове время, Вы можете проверять значение поля ввода. Если приложение вызывает для этого, Вы можете использовать ads_set_tile () снова, чтобы изменить это значение. В течение повторных вызовов, Вы можете также использовать ads_mode_tile () чтобы изменить состояние поля ввода. Следующая таблица показывает значения ads_mode_tile () параметр режима:

Значения режима поля ввода

Значение

Символ

Описание



0

MODE_ENABLE

Позволяют поле ввода

1

MODE_DISABLE

Отключают поле ввода

2

MODE_SETFOCUS

Набор сосредотачивается к полю ввода

3

MODE_SETSEL

Выбор части содержания окна редактирования

4

MODE_FLIP

Зеркальное изображение, высвечивающее вкл. или выкл.

Когда Вы используете ads_mode_tile () чтобы отключить поле ввода, которое имеет текущий фокус, Вы должны вызвать ads_mode_tile () снова, чтобы установить фокус в отличное поле ввода (в большинстве случаев, следующий табулятор в диалоговом окне). Иначе, фокус останется на заблокированном поле ввода, которое является нелогичным и может вызывать ошибки.

Пример поля ввода “отключение” является рядом диалогового окна “страницы”, что пользователь шагает через,  выбирая кнопку Next или Previous. Когда пользователь нажимает Затем на предпоследней странице, кнопка заблокирована. Тот же самый случается после нажима Предыдущего на второй странице. В обоих случаях, код должен отключить кнопку, которая была нажата, и затем устанавливала фокус в различное поле ввода.

Следующий пример управляет кластером названным “группа”. Когда переключатель установлен в От, поля ввода в кластере неактивны и не должны измениться:

static void CALLB group_on_off(ads_callback_packet *cbpkt)

{

ads_hdlg hdlg = cbpkt->dialog;

char value[TILE_STR_LIMIT];

strcpy(value, cbpkt->value);

if (strcmp(value, "0") == 0) { // Cluster is disabled.

ads_mode_tile(hdlg, "group", MODE_DISABLE);

} else { // The value must equal "1".

ads_mode_tile(hdlg, "group", MODE_ENABLE);

}

}

Вы можете осматривать другие атрибуты помимо значения поля ввода с get_attr () функция. Следующий пример отыскивает метку кнопки, вызвал “pressme”:

char label_str[TILE_STR_LIMIT];

ads_get_attr(hdlg, "pressme", "label", label_str, TILE_STR_LIMIT);

Если Вы используете ads_get_attr () чтобы отыскать атрибут значения, это сохраняет атрибут значения в файле DCL (начальное значение поля ввода). Ads_get_tile () функция, однако, получает текущее значение во время выполнения поля ввода. Два значения - не обязательно тот же самый.

Ads_get_attr () функция возвращает значение атрибута в строковом параметре (значение). Поскольку эта функция устанавливает значение строки, Вы должны разместить пространство для этого, как показано в предшествующем примере.



Содержание раздела