Тема: Пример со скользящей шкалой
Если у кого есть, выложите, пожалуйста, пример lsp и dcl-файла, где в диалоговом окне будет текст, который можно просматривать с помощью бегунка
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → DCL → Пример со скользящей шкалой
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Если у кого есть, выложите, пожалуйста, пример lsp и dcl-файла, где в диалоговом окне будет текст, который можно просматривать с помощью бегунка
> qwerty
А хотя бы так мона:
LSP:
;;slide.lsp (defun c:test (/ dcl_id ) (setq dcl_id (load_dialog "slide.dcl")) (new_dialog "begun" dcl_id) (set_tile "dia" " К примеру...") (set_tile "beg" "1") (setq const (get_tile "txt")) (action_tile "beg" (strcat "(progn (setq position (atoi $value))" "(cut_text position \"txt\")" "(if (= position 1)(set_tile \"txt\" const)))" ) ) (action_tile "accept" "(done_dialog)(setq hit T)") (action_tile "cancel" "(done_dialog)(setq hit nil)") (setq result (start_dialog)) (unload_dialog dcl_id) (princ) ) (defun cut_text (pos txt) (set_tile txt (substr (get_tile txt) (1+ pos)) ) )
DCL:
//slide.dcl begun : dialog { key = "dia"; label = ""; spacer; : row { : edit_box {label = "See the text:"; key = "txt"; value = "I am adjusting a lisp program. I have to make the slider into an edit_box if this will be possible to do."; edit_width = 40; } } : row { height = 2.0; : text_part { key = "empty"; label = ""; } : slider { key = "beg"; min_value = 1; max_value = 95; <==строго соответствует длине строки текстбокса small_increment = 1; big_increment = 2; width = 42; fixed_width = true; is_tab_stop = false; } } ok_cancel; }
~'J'~
а чтобы вертикально бегунок перемещался, что поменять?
> qwerty
Просто изменить свойство layout и
просчитать геометрию бегуна:
: slider { layout = vertical;//по умолчанию горизонтальный, тогда можно не указывать key = "beg2"; min_value = 1; max_value = 10; small_increment = 1; big_increment = 2; height = 12;//<==вертикальный размер (примерно: max_value + размеры стрелок) ... далее те же опции что и для горизонтального
~'J'~
еще одна проблема.
У меня зависает ADT из-за строчки:
(action_tile "KLT0" "(KLT)"),
где KLT-программа. То есть при нажатии кнопки с кодом "KLT0", должна начинать работать программа "KLT". Надо как-то по-другому задавать это действие?
> qwerty
Синтаксис правильный, если функция KLT
написана правильно проблем быть не должно
Протестируй функцию отдельно вне контекста
общего файла
Еще лучше выложи код этой функции, тогда проще
разобраться
Еще один возможный вариант отказа, если
при откликe на "accept" эта функция игнорируется
Все зависит как у тебя там все заложено
в смысле алгоритма программы...
(по-моему больше запутал чем помог :)
~'J'~
а по-другому как-то можно задать?
У меня если в командной строке набрать (KLT),странно, но не загружает, а если (load "KLT")(KLT), то все ок
( Defun KLT (/) ( Setq DL1 ( getint "\n 4 опорные точки <старые>-0 нет-1 :")) ( if (/= Dl1 nil)( KLA )) ( Setq DL1 nil ) ( Setq DL2 nil ) ( Setq DL3 nil ) ; Н А Ч А Л О Ц И К Л ( while (= DL1 nil) ( command "_zoom" "_window" L2K L1K ) ( if (/= DL3 nil)( command "_erase" TT10 "")) ( Setq TT10 ( getpoint "\n 1 точка поле 1 <Б/У>):")) ( if (= TT10 nil) (progn ( Setq TT101 ( getpoint "\n 1 точка направления ):")) ( Setq TT102 ( getpoint "\n 2 точка направления):")) ) ( progn (Setq TT101 nil)(Setq TT102 nil)) ) (if (/= TT10 nil)(command "_point" TT10)) ( Setq TT20 ( KL KP1 KP2 KP3 KP31 KP32 KP4 KP41 KP42 KR1 KR2 KR3 KR31 KR32 KR4 KR41 KR42 TT10 TT101 TT102)) ( command "_zoom" "_window" LL2K LL1K ) ( if (/= TT20 nil )(command "_point" TT20)) ( Setq DL3 ( getint "\n <сохранить>-0 нет-1 :")) ( if (/= DL3 nil)( command "_ERASE" TT20 "")) ( Setq DL1 ( getint "\n <продолжить >-0 нет-1 :")) ) ; К О Н Е Ц Ц И К Л ) ;End of the KLT function
> qwerty
Потому что это у тебя отдельный файл
Просто скопируй код оттуда и вставь
эту функцию в твой рабочий файл:
;; начало файла ;; локальные фунции (defun KLT () ... ) (defun A() ... ) (defun B () ... ) ;; окончание блока локальных функций ;; основная программа (defun C:abcd() ;; load dcl ;; working with dcl ;; working with result (princ) )
~'J'~
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → DCL → Пример со скользящей шкалой
Форум работает на PunBB, при поддержке Informer Technologies, Inc