| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Диалоговое окно с возможностью прокрутки

Диалоговое окно с возможностью прокрутки

Ответ
Поиск в этой теме
Непрочитано 05.02.2018, 09:42 #1
Диалоговое окно с возможностью прокрутки
ivan55
 
Регистрация: 05.02.2018
Сообщений: 14

Добрый день,
подскажите как применить полосу прокрутки к таблице в диалоговом окне,
так как таблица очень большая и не вмещается в диалоговое окно.
http://forum.dwg.ru/attachment.php?a...1&d=1517812915

Миниатюры
Нажмите на изображение для увеличения
Название: Диалоговое окно.jpg
Просмотров: 109
Размер:	114.9 Кб
ID:	198722  

Просмотров: 3184
 
Непрочитано 05.02.2018, 09:45
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


К такой таблице - никак. Можно создать программные кнопки, которые будут менять по клику заголовки и значения полей, но это еще тот головняк будет. Уж проще, как где-то недавно подсказывали, использовать list_box с установленными tab. Добавить кнопочки - редактировать значения, удалить строку, добавить строку. Ну или создать отдельные поля, куда и выводить редактируемые значения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 09:49
#3
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


А не подскажете каким образом сделать такие кнопки о которых вы говорите.
ivan55 вне форума  
 
Непрочитано 05.02.2018, 09:51
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


проще перейти на dotNET
trir вне форума  
 
Непрочитано 05.02.2018, 09:53
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Какие именно? И в каком месте непонятка?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 09:54
#6
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


Цитата:
Сообщение от trir Посмотреть сообщение
проще перейти на dotNET
а что это такое

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно создать программные кнопки, которые будут менять по клику заголовки и значения полей
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Добавить кнопочки - редактировать значения, удалить строку, добавить строку
Просто не так давно работаю с AutoLisp.
Не могли бы вы мне помочь
ivan55 вне форума  
 
Непрочитано 05.02.2018, 10:02
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
а что это такое
https://habrahabr.ru/post/235723/
http://usa.autodesk.com/adsk/servlet...12&id=18162797
trir вне форума  
 
Непрочитано 05.02.2018, 10:07
#8
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


На DCL невозможно помочь. Полосу прокрутки можно сделать только для каждого редактируемого поля.
Setvar вне форума  
 
Автор темы   Непрочитано 05.02.2018, 10:24
#9
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно создать программные кнопки, которые будут менять по клику заголовки и значения полей, но это еще тот головняк будет. Добавить кнопочки - редактировать значения, удалить строку, добавить строку.
Можешь помочь написать диалоговое окно с такими кнопками?
ivan55 вне форума  
 
Непрочитано 05.02.2018, 11:07
1 | #10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


По-быстрому как-то так
Код:
[Выделить все]
 (vl-load-com)

(defun test (lst / _kpblc-list-add-or-subst _kpblc-conv-value-to-string _kpblc-eval-value-round dcl_file dcl_handle dcl_res dcl_lst dcl_id)
            ;|
  lst - список вида '((<Отметка> . <Расстояние>) (...))
*    Пример вызова:
(test '((1.65 . 2) (2 . 16) (3 . 0.6)))
|;
  (defun _kpblc-list-add-or-subst (lst key value)
    (if (not value)
      (vl-remove-if (function (lambda (x) (= (car x) key))) lst)
      (if (cdr (assoc key lst))
        (subst (cons key value) (assoc key lst) lst)
        (cons (cons key value) (vl-remove-if (function (lambda (x) (= (car x) key))) lst))
        ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of defun
  (defun _kpblc-conv-value-to-string (value /)
    (cond ((= (type value) 'str) value)
          ((= (type value) 'int) (itoa value))
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (equal value (fix value) 1e-6)
                ) ;_ end of and
           (itoa (fix value))
           )
          ((and (= (type value) 'real)
                (equal value (_kpblc-eval-value-round value 1.) 1e-6)
                (not (equal value (fix value) 1e-6))
                ) ;_ end of and
           (rtos value 2)
           )
          ((= (type value) 'real) (rtos value 2 14))
          ((not value) "")
          (t (vl-princ-to-string value))
          ) ;_ end of cond
    ) ;_ end of defun
  (defun _kpblc-eval-value-round (value to) ;|
;; http://forum.dwg.ru/showthread.php?p=301275
|;  (if (zerop to)
      value
      (* (atoi (rtos (/ (float value) to) 2 0)) to)
      ) ;_ end of if
    ) ;_ end of defun
  (defun fun_refill-list (ref-list)
    (start_list "lst_level" 3)
    (mapcar (function
              (lambda (x)
                (add_list (strcat (_kpblc-conv-value-to-string (car x)) "\t" (_kpblc-conv-value-to-string (cdr x))))
                ) ;_ end of lambda
              ) ;_ end of function
            (cdr (assoc "res" (eval ref-list)))
            ) ;_ end of mapcar
    (end_list)
    ) ;_ end of defun
  (defun fun_callback (key value ref-list / tmp)
    (cond ((= key "lst_level")
           (set ref-list (_kpblc-list-add-or-subst (eval ref-list) "sel" (setq value (atoi value))))
           (set_tile "txt_level"
                     (_kpblc-conv-value-to-string (car (nth value (cdr (assoc "res" (eval ref-list))))))
                     ) ;_ end of set_tile
           (set_tile "txt_dist"
                     (_kpblc-conv-value-to-string (cdr (nth value (cdr (assoc "res" (eval ref-list))))))
                     ) ;_ end of set_tile
           )
          ((= key "txt_level")
           (setq tmp (nth (cdr (assoc "sel" (eval ref-list))) (cdr (assoc "res" (eval ref-list)))))
           (set ref-list
                (_kpblc-list-add-or-subst (eval ref-list)
                                          "res"
                                          (subst (cons (atof value) (cdr tmp)) tmp (cdr (assoc "res" (eval ref-list))))
                                          ) ;_ end of _kpblc-list-add-or-subst
                ) ;_ end of set
           (fun_refill-list ref-list)
           )
          ((= key "txt_dist")
           (setq tmp (nth (cdr (assoc "sel" (eval ref-list))) (cdr (assoc "res" (eval ref-list)))))
           (set ref-list
                (_kpblc-list-add-or-subst (eval ref-list)
                                          "res"
                                          (subst (cons (car tmp) (atof value)) tmp (cdr (assoc "res" (eval ref-list))))
                                          ) ;_ end of _kpblc-list-add-or-subst
                ) ;_ end of set
           (fun_refill-list ref-list)
           )
          ) ;_ end of cond
    ) ;_ end of defun
  (setq dcl_lst    (_kpblc-list-add-or-subst dcl_lst "res" lst)
        dcl_file   (strcat (vl-string-right-trim "\\"
                                                 (vla-get-tempfilepath (vla-get-files (vla-get-preferences (vlax-get-acad-object))))
                                                 ) ;_ end of vl-string-right-trim
                           "\\dlg.dcl"
                           ) ;_ end of strcat
        dcl_handle (open dcl_file "w")
        ) ;_ end of setq
  (foreach item '("dlg:dialog{label=\"dwg.ru\";"                                       "	:list_box{key=\"lst_level\";label=\"Высотные отметки      Расстояние между отметками\";width=50;tabs=20;}"
                  "	:row{"                                                         "		:edit_box{key=\"txt_level\";label=\"Отметка\";}"
                  "		:edit_box{key=\"txt_dist\";label=\"Расстояние\";}"     "		}"
                  "	ok_cancel;"                                                    "	}"
                  )
    (write-line item dcl_handle)
    ) ;_ end of foreach
  (close dcl_handle)
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "dlg" dcl_id "(fun_callback $key $value 'dcl_lst)")
  (fun_refill-list 'dcl_lst)
  (set_tile "lst_level" "0")
  (fun_callback "lst_level" "0" 'dcl_lst)
  (action_tile "cancel" "(done_dialog 0)")
  (action_tile "accept" "(done_dialog 1)")
  (setq dcl_res (start_dialog))
  (unload_dialog dcl_id)
  (if (= dcl_res 1)
    (cdr (assoc "res" dcl_lst))
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.02.2018, 11:09
#11
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


ivan55, может, у тебя есть программный код на AutoLisp для этого диалогового окна?
Setvar вне форума  
 
Непрочитано 05.02.2018, 11:12
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Добавлю: кнопки на добавление / удаление записей не делал. Некогда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 11:21
#13
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


А как его правильно запустить?
ivan55 вне форума  
 
Непрочитано 05.02.2018, 11:21
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Кого "его"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 11:22
#15
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Кого "его"?
ТО что ты скинул/
ivan55 вне форума  
 
Непрочитано 05.02.2018, 11:23
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


https://dwg.ru/pub/9
И пример вызова я привел.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 11:27
#17
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
https://dwg.ru/pub/9
И пример вызова я привел.
Вылетает ошибка слишком мало агументов
ivan55 вне форума  
 
Непрочитано 05.02.2018, 11:27
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Антиресно - я проверял, все работало. Показывай, как вызываешь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.02.2018, 11:30
#19
ivan55


 
Регистрация: 05.02.2018
Сообщений: 14


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Антиресно - я проверял, все работало. Показывай, как вызываешь.
Запустил. Спасибо большое
ivan55 вне форума  
 
Непрочитано 05.02.2018, 11:55
#20
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


проще использовать текстовый файл с данными, как в команде _AeccCreateProfileFromFile
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Диалоговое окно с возможностью прокрутки

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA. Как в AutoCad создать всплывающее диалоговое окно, которое будет запрашивать свойства динамического блока перед его вставкой Jeneva Программирование 9 23.06.2017 19:28
Альтернативное диалоговое окно шрифта rtyu AutoCAD 6 23.02.2016 09:30
Как восстоновить диалоговое окно "Генератор валов" в AutoCad Mechanikal-е? Армен Грачикович Вертикальные решения на базе AutoCAD 2 11.03.2013 13:49
Autocad 2012. Почему макрос подавляет диалоговое окно? vovkaf Программирование 24 10.09.2012 18:10