RMateus 发表于 2022-7-6 06:34:08

DCL输入规则

亲爱的朋友们:,
 
我想学习如何应用编辑框输入规则。
例如,如果您只想接受以下格式的数字:
 
888.8.88
 
我该如何实施这一规则?
 
谢谢你,很抱歉我的英语不好。

Tharwat 发表于 2022-7-6 06:41:42

你是怎么找到你的旧线索的?
 
我们是在浪费时间和你在一起还是怎么了?
 
http://www.cadtutor.net/forum/showthread.php?79303-DCL帮助

fixo 发表于 2022-7-6 06:48:32

尝试将此代码改写为您的西装:
(defun C:NUMP   (/ dcl_id text pick)

(defun box_callback(text act)
(if (member act (list 1 2))
(if(not (wcmatch text "###.#.##" ))
    (progn
(set_tile "txt" (substr text 1 (1- (strlen text))))
(alert "Wrong character removed, try again")
      )
)
)
)
(defun rem_blanks(input)
   (vl-list->string
   (vl-remove 32
      (vl-string->list input)
)
   )
)

(setvar "CMDECHO" 0)
(setq dcl_id (load_dialog "NUMP.dcl"))
(if (not (new_dialog "NUMP" dcl_id))
   (exit))
(action_tile
"txt"
"(box_callback $value $reason)"
)
(action_tile "accept" (strcat
      "(progn "   
   "(setq text (get_tile \"txt\"))"
    "(done_dialog 1))"))
(action_tile
   "cancel"
   "(done_dialog 2)")
(setq pick (start_dialog))
(unload_dialog dcl_id)
(if (= pick 1)
   (alert (strcat "You entered: " (rem_blanks text))))
(setvar "CMDECHO" 1)
(princ)
)
 
//DCL
 
   NUMP : dialog {
label = "Validate Text Input";
spacer;
   :row {                                 
   fixed_width = true;
   : boxed_column {
   label = " Enter numbers in format ofXXX.X.XX:";
   fixed_width = true;
   width=30;
   : edit_box {
   key = "txt";
   initial_focus=true;
   edit_width =29;
   fixed_width_font =true;
   }
   spacer;
   }
   }
   ok_cancel;
   }

Guest kruuger 发表于 2022-7-6 06:59:54

加载附加文件,然后:
(cd:DCL_StdEditBoxDialog
(list 3
   (list
   (cons 1 "Enter real number")
   (cons 2 "Number can't be a zero")
   (cons 8 "Space not allowed")
   (cons 16 "This is not a number")
   (cons 32 "Number to small")
   (cons 64 "Number to big")
   )
   "19" -100 100 2 2
)
"Level" "Enter level: (-100 < X < 100)" 40 13 (list "&Ok" "&Cancel") T nil
)
克鲁格
CADPL-Pack-v1。lsp

RMateus 发表于 2022-7-6 07:06:11

塔瓦,这是给你的。
我知道我是这些编程冒险的新手,如果你认为你的问题需要浪费时间,我很抱歉。我不是程序员,我的英语也不好,但我想学习。我试着学习我的节奏。如果这让你不高兴,我很抱歉。
给我的朋友菲索和克鲁格。非常感谢您的帮助和一切。
拥抱。

MSasu 发表于 2022-7-6 07:08:01

@克鲁格:您可能希望简化用作参数的列表的语法,以避免一些计算:
'(3
((1. "Enter real number")
(2. "Number can't be a zero")
(8. "Space not allowed")
(16 . "This is not a number")
(32 . "Number to small")
(64 . "Number to big"))
"19" -100 100 2 2)

Tharwat 发表于 2022-7-6 07:19:33

这个职位一定很有趣。
 
http://www.cadtutor.net/forum/showthread.php?76484-在DCL&p=516049&viewfull=1#post516049中是否可能

Guest kruuger 发表于 2022-7-6 07:26:42

谢谢MSasu
 
再一个:
(cd:DCL_StdEditBoxDialog
'(1
   (
   (1. "Empty string error")
   (2. "Invalid layer name")
   (4. "Layer already exist")
   (8. "Space not allowed")
   (16 . "Layer do not match pattern")
   (32 . "Number to small")
   )
   "" "LAYER" "??-???"
)
"Layer" "Enter layer name (format ##-###)" 40 13 (list "&Im sure" "&Leave window") T 6
)

SLW210 发表于 2022-7-6 07:31:04

 
我认为,在提供帮助/建议/解决方案后,通常会给出某种反馈,至少是一句“谢谢”(正如你在上一篇文章中强调的那样),或者建议/帮助/解决方案是否足够。你的另一个线程请求帮助,而你提供了0个反馈。
 
您的反馈也为寻求类似解决方案的其他人提供了帮助。

RMateus 发表于 2022-7-6 07:38:57

我知道你充满了理性,我为此道歉。由于工作中的一次事故,我出现了一种影响认知能力的缺陷,这让我忘记了上个月学习的内容,但这是一个个人问题,我不会告诉你,因此我道歉并保证我不会问任何问题。要在这里写这些台词,我必须使用在线翻译,我希望这不会麻烦。
衷心感谢所有帮助过我的人。
直到永远。
 
R、 马修斯
页: [1]
查看完整版本: DCL输入规则