Тема: Переход в другую строку и выполнение кнопки ОК по Enter

А как перейти в следующее поле ввода по нажатию Enter, а потом выполнить ОК. сейчас даже при задании action_title ОК не срабтывает? Заранее спасибо)

Re: Переход в другую строку и выполнение кнопки ОК по Enter

А надо ли? По твоей форме это взаимоисключающие операции (переход на другое поле для ввода и выход из меню для обработки результатов). Переход по полям реализован стандартно для Windows: Tab (вперед) и Shift+Tab (назад). Не вводи пользователя в заблужденине. Он этого не любит.

Re: Переход в другую строку и выполнение кнопки ОК по Enter

Ладно, с этим понятно, но как хотябы сделать так, чтобы кнопка по ентеру нажималась?

Re: Переход в другую строку и выполнение кнопки ОК по Enter

А сюда заглядывал:
https://www.caduser.ru/forum/topic14685.html

сейчас даже при задании action_title ОК не срабтывает? Заранее спасибо)

описАлся или ошибка action_tile

Re: Переход в другую строку и выполнение кнопки ОК по Enter

> Юрий
заглядывал. пробовал, по-разному, и так и так, не работает. Всеравно не срабатывает, но при этом 2 других окна работают нормально

Re: Переход в другую строку и выполнение кнопки ОК по Enter

> Novichek
Ну если два окна работают, тогда ищи чистую ошибку (описку). Где-то скобку потерял или кавычки забыл. Вложенные кавычки должны предваряться обратным слешем "\". Все функции DCL работают с аргументами типа "строка". Может быть имена ключей (key) в разных диалогах пересекаются.

Re: Переход в другую строку и выполнение кнопки ОК по Enter

"А как перейти в следующее поле ввода по нажатию Enter, ..."
(action_tile "A" "(mode_tile \"B\" 2)")
(action_tile "B" "(mode_tile \"C\" 2)")... и так до бесконечности ))) mode_tile с индексом 2 выделяет поле. Находясь в ячейке "А" после нажатия на Enter команда выделит поле "В"...

Re: Переход в другую строку и выполнение кнопки ОК по Enter

> Ariec
Это делается так:

;;Lisp
(defun C:aha ()
  (if (<= (setq dcl_id (load_dialog "tempo.dcl")) 0)
    (progn
      (alert "Не возможно загрузить файл диалога prims_two.dcl !!!")
      (exit)
    );progn
  );if
  (if (not (new_dialog "boxes" dcl_id))
    (progn
      (alert "Не загружается диалог")
      (exit)
    );progn
  );if
  (action_tile "cancel" "(done_dialog 0)")
  (action_tile "accept" "(done_dialog 1)")
  (mode_tile "ПервыйБокс" 2)
  (action_tile "ПервыйБокс" "(setq first $value)
    (if (/= $reason 2)
      (mode_tile \"ВторойБокс\" 2)
    )"
  )
  (action_tile "ВторойБокс" "(setq second $value)
   (if (/= $reason 2)
      (mode_tile \"ТретийБокс\" 2)
    )"
  )
  (action_tile "ТретийБокс" "(setq third $value)
    (if (/= $reason 2)
      (mode_tile \"accept\" 2)
    )"
  )
  ;;;***
  (setq done_dlg_val (start_dialog))
  (unload_dialog dcl_id)
  (if (/= done_dlg_val 1)
    (exit)
  );if
(alert (strcat (vl-princ-to-string first) "\n"
           (vl-princ-to-string second) "\n"
           (vl-princ-to-string third)))
)
;;DCL
boxes :dialog {label = "Test Boxes";
:boxed_column {
:edit_box {label="First";
key="ПервыйБокс";
}
:edit_box {label="Second";
key="ВторойБокс";
}
:edit_box {label="Third";
key="ТретийБокс";
}
}
 ok_cancel;
}
  

~'J'~