Тема: Dialog-box (dcl)... Как заставить работать SLIDER???
При организации dialog-box столкнулся с проблемой. Мне необходимо менять некий параметр с помощью "ползунка" - slider, причем в момент, когда пользователь "отпускает" движок ползунка, диалог должен ненадолго выключится, произвести изменения в чертеже на экране, а затем снова включиться. Если же пользователь продолжает двигать ползунком, диалог должен продолжать считывать новые значения "ползунка" не пытаясь перерисовать картинку на экране. И вот здесь-то и возникает проблема - диалог позволяет изменять состояние "ползунка" всего лишь на один шаг, после чего пытается выключится и перерисовать картинку. Я попытался запретить перерисовку картинки, если с момента последнего изменения "ползунка" прошло слишком мало времени, - слегка полегчало, но работает почему-то неустойчиво - иногда позволяет двигать "ползунком" (но не дольше, чем указанный мной "лимит времени"), а иногда на первом же шаге снова замирает и ждет "отпускания ползунка", чтобы перерисовать картинку... Короче, чепуха получается...
Знает ли кто-нибудь, как сделать это грамотно?
Вот часть программы:
(defun time_point ( / x1)
(setq x1 (rtos (getvar "CDATE") 2 8))
(setq x1 (/ (atof (substr x1 (- (strlen x1) 3))) 100))
); Текущее значение секунд
.....................................часть программы пропущена
(action_tile "slide_r" (strcat "(progn (setq x (+ (* (/ (atof (get_tile \"slide_r\")) 10000) (- max_r min_r)) min_r))"
" (zam_r x)"
" (dial_korrect)"
" (if (= flag \"1\")"
" (if (= p 0)"
" (progn (setq p 1) (setq t0 (time_point)))"
" (if (>= (- (setq t1 (time_point)) t0 5) 0)"
" (progn (setq p 0) (setq koord (done_dialog 4)))"
" (setq t0 t1)"
")"
")"
")"
")"))
....................................
Пояснения:
(zam_r x) - ппрг замены элемента в списке;
(dial_korrect) - ппрг пересчета некоторых значений в окошках диалога;
flag - переменная, имеющая значение "1", когда включен режим "Мгновенной перерисовки изображения на экране", то есть именно то, что и не желает у меня корректно работать;
p - параметр;
t0, t1 - моменты времени (предыдущее срабатывание ползунка и текущее срабатывание ползунка);
koord - запоминание координат диалога, чтобы при последующем выводе его можно было отобразить в том же месте экрана...