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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > DCL Сохранить предыдущий ввод значений в диалоговом окне

DCL Сохранить предыдущий ввод значений в диалоговом окне

Ответ
Поиск в этой теме
Непрочитано 09.02.2011, 15:54 #1
DCL Сохранить предыдущий ввод значений в диалоговом окне
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья, подскажите следующее. Открыл диалог, ввел в него необходимые исходные данные, уставил радио кнопку в нужное положение, нажал ОК. Затем мне нужно что-то дописать или изменить исходные данные, я опять открываю диалог, а в нем все значения по умолчанию (т.е. пустые или нулевые). Как сделать, что бы все что я ввел окне сохранялось?
Просмотров: 4841
 
Непрочитано 09.02.2011, 16:21
#2
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Сначала перед закрытием диалога, прочесть все имеющиеся поля и сохранить в переменную, потом, при повторном открытии, проверять этот список и если он не пуст, то грузить не умолчальные данные, а информацию из этого списка...

между сеансами, данные можно хранить вне автокада, мне нравится в базе данных, другим в ini файлах итд...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 09.02.2011, 16:34
#3
Zaghim


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


Да уж...гимора полные штаны... а нельзя как в ВБА? Не делать done_dialog, а например visible_false_dialog, а потом visible_true_dialog
Zaghim вне форума  
 
Непрочитано 09.02.2011, 16:41
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Offtop: DCL-зло
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.02.2011, 16:48
#5
Zaghim


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


Понятно, что зло))) но надо как-то решить эту байду)
Zaghim вне форума  
 
Непрочитано 09.02.2011, 18:49
#6
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
DCL-зло
DCL -это ветхозаветный прообраз XAML.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 10.02.2011, 07:57
#7
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


LSP запоминает в одном сеансе
Код:
[Выделить все]
 (defun c:Zaghim_test (/ dcl_id var_list)
  (if (< (setq dcl_id (load_dialog
			"clamp.DCL"
		      )
	 )
	 0
      )
    (exit)
    (new_dialog "my_dial" dcl_id)
  )
  (setq	var_list '("za"	    "do"     "ot"
		   "ob"	    "vvod_1" "vvod_2"
		  )
  )
  (or value_user_list
      (setq value_user_list
	     '("1" nil nil nil nil nil)
      )
  )
  
  (mapcar
    (function (lambda (x y)
		(if x
		  (set_tile y x)
		)
	      )
    )
    value_user_list
    var_list
  )
  
  (action_tile
    "accept"
    (vl-princ-to-string
      (quote
	(progn
	  (setq	value_user_list
		 (mapcar
		   (function
		     (lambda (x)
		       (get_tile x)
		     )
		   )
		   var_list
		 )
	  )
	  (done_dialog)
	)
      )
    )
  )
  
  (action_tile
    "cancel"
    "(done_dialog)"
  )
  
  (start_dialog)
  (unload_dialog dcl_id)

)
DCL
Код:
[Выделить все]
my_dial
:dialog{label="Диалог";

:radio_row{label=" ";
:radio_button{key="za";label="Zaghim";}
:radio_button{key="do";label="Doghim";}
:radio_button{key="ot";label="Otghim";}
:radio_button{key="ob";label="Obghim";}
}
spacer;
:row{label=" ";
:edit_box{key="vvod_1";label="Ввод 1";}
:spacer{width=10;}
:edit_box{key="vvod_2";label="Ввод 2";}
}

ok_cancel;
}
Вложения
Тип файла: flv Зажим.flv (447.3 Кб, 91 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 10.02.2011 в 10:19.
Disney вне форума  
 
Непрочитано 10.02.2011, 09:00
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Да уж...гимора полные штаны...
Это только для тех, кто не умеет выполнять элементарные операции с файлами (чтение/запись). На то, чтобы научиться это делать - много времени не уйдёт (было бы желание).
Если автору нужно, чтобы программа запоминала значения и между сеансами работы AutoCAD, то тем, для кого озвученный в топике вопрос не видится как "гимора полные штаны..."(с) - вариант предложенный Елпановым Евгением очевиден как самый простой и удобный (я о сохранении информации в файлах). Принимать решение о том, хранить ли такого рода данные в базе данных - это нужно смотреть по обстоятельствам, а хранение в файлах - самый рядовой случай.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 10.02.2011, 10:45
#9
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
Если автору нужно, чтобы программа запоминала значения и между сеансами работы AutoCAD
Были темы Запомнить последнее введенное значение и Ввод данных по умолчанию, в итоге там всё свелось к спору, кто круче ini, реестр или XML, и я тогда в них так и не разобрался, потому что, зачастую продвинутые программисты выкладывают свои "элементарные" примеры, в коде которых заключается вся суть, ну а 90% остального, не столь интересного кода, находятся в библиотечных функциях, при этом библиотека эта не публичная, а у каждого своя.
Так что, я сам потихоньку научился писать тупо в txt, мне пока хватает, вот пример для Zaghim

Код:
[Выделить все]
 (defun c:Zaghim_test (/
		      properties_write
		      properties_read
		      dcl_id
		      var_list
		     )
;;;
;;;properties_write
;;;
  (defun properties_write (/ wPath ofile)
    (if	(setq wPath (findfile "ACAD.PAT"))
      (progn
	(setq wPath (vl-filename-directory wPath))
	(or (eq "\\" (substr wPath (strlen wPath)))
	    (setq wPath (strcat wPath "\\"))
	)
	(setq ofile
	       (open (strcat wPath
			     "Zaghim_test_value_user.zgm"
		     )
		     "w"
	       )
	)
	(foreach item value_user_list
	  (write-line item ofile)
	)
      )
      (close ofile)
    )
  )
;;;
;;;properties_read
;;;
  (defun properties_read
			 (/ File temp prop)
    (if
      (setq file
	     (findfile "Zaghim_test_value_user.zgm")
      )
       (progn
	 (setq
	   file	(open file "r")
	 )
	 (while	(setq temp (read-line file))
	   (setq prop
		  (cons	temp
			prop
		  )
	   )
	 )	 
	 (close file)
	 (reverse prop)
       )
    )
  )
;;;
;;;
;;;
  (if (< (setq dcl_id (load_dialog
			"clamp.DCL"
		      )
	 )

	 0
      )
    (exit)
    (new_dialog "my_dial" dcl_id)
  )
  (setq	var_list '("za"	    "do"     "ot"
		   "ob"	    "vvod_1" "vvod_2"
		  )
  )
  (or
    value_user_list
    (setq value_user_list (properties_read))
    (setq value_user_list
	   '("1" "0" "0" "0" "" "")
    )
  )


  (mapcar
    (function (lambda (x y)
		(if x
		  (set_tile y x)
		)
	      )
    )
    value_user_list
    var_list
  )

  (action_tile
    "accept"
    (vl-princ-to-string
      (quote
	(progn
	  (setq	value_user_list
		 (mapcar
		   (function
		     (lambda (x)
		       (get_tile x)
		     )
		   )
		   var_list
		 )
	  )
	  (properties_write)
	  (done_dialog)
	)
      )
    )
  )

  (action_tile
    "cancel"
    "(done_dialog)"
  )

  (start_dialog)
  (unload_dialog dcl_id)

)
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 10.02.2011 в 18:18.
Disney вне форума  
 
Автор темы   Непрочитано 10.02.2011, 13:41
#10
Zaghim


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


Хм, хм... будем разбираться... но вообще оч странно, что нет такого способа как запомнить значения.. файл вообще считаю неправильным...нельзя хранить информацию в файле...все должно быть в чертеже...
Zaghim вне форума  
 
Непрочитано 10.02.2011, 14:27
#11
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
...все должно быть в чертеже...
Ну, если так считаешь - так и храни в чертеже. В словарях. Действительно, какая-то информация может быть привязана и к конкретному чертежу. Только вряд ли это должны быть результаты какого-то диалога.

Я, например, в словарях рисунка храню связанные с ним данные - масштаб оформления модели и единицы (вне связи со штатными данными).

Только это посложнее, чем с файлом. Для безотказной работы пришлось сделать 15 низкоуровневых функций и 3 "конечных", которыми пользоваться просто:
(ru-dictvar-set-data var_name value), (ru-dictvar-get-data var_name) и (ru-dictvar-list-all-var)
ShaggyDoc вне форума  
 
Непрочитано 10.02.2011, 16:04
#12
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Zaghim Посмотреть сообщение
все должно быть в чертеже...
В чертеже хранить мусор, который к чертежу никакого отношения не имеет? Хм...
Александр Ривилис вне форума  
 
Непрочитано 10.02.2011, 20:47
#13
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
нельзя хранить информацию в файле...все должно быть в чертеже...
Тебе же Евгений Елпанов в посте №2 абсолютно точно сказал, как надо поступать.
Раз ты пишешь
Цитата:
а нельзя как в ВБА? Не делать done_dialog, а например visible_false_dialog, а потом visible_true_dialog
стало быть тебе нужно сохранять данные в пределах сеанса работы с документом. Ну так и используй глобальную переменную. И никаких файлов.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > DCL Сохранить предыдущий ввод значений в диалоговом окне



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
установка начальных параметров в диалоговом окне (.dcl) paradoxvaha Программирование 24 02.04.2012 12:50
большие отступы в диалоговом окне Александер Программирование 12 05.06.2006 14:58