乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 33|回复: 19

[编程交流] 显示大文本的最佳方式

[复制链接]

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:26:02 | 显示全部楼层 |阅读模式
你好
 
我有一个例程,在xrecord中存储了几个开发注释。
 
我试图在某种对话框中显示这些注释中的文本。
 
目前我正在使用:
 
  1. : boxed_column {
  2. : paragraph {
  3. : text_part {
  4. label = "notes";
  5. }
  6. }

 
dcl是根据图形中存在的注释动态创建的。
问题是一些文本行太大,dcl说“对话框太大,无法在屏幕上显示”
 
我可能还想在注释下方放置一些按钮,这些按钮将使用vslide命令显示幻灯片
 
谢谢
 
顺便说一句对不起,所有的帖子
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:31:00 | 显示全部楼层
我可以将字符串分成几个一组,直到它适合屏幕,但我想知道是否有更好的方法
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:34:51 | 显示全部楼层
使用list_框显示注释,可以使用我的字符串换行功能将注释拆分为单独的行。这样,当内容超过列表框平铺的垂直高度时,内容将滚动。
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:35:58 | 显示全部楼层
再次非常感谢。。我要调查一下。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:41:41 | 显示全部楼层
您可以将它们放置在编辑框中,然后将is\u enabled属性设置为false。这样,您就可以实现自动文本包装。
 
或者,您可以使用文本平铺,然后用编码的新行设置其值。例如。
因此,在lisp中,需要将文本分解为指定的最大行长度。您可以在下一个位置之前搜索空格/制表符,然后将该字符替换为“\n”。您可以尝试此例程来完成以下任务:
  1. ;;; -------------------------------------------------------------------------------------
  2. ;;; Word-wrap a string to a maximum length per line
  3. ;;; -------------------------------------------------------------------------------------
  4. (defun Text:WordWrap (str len / n c m l)
  5. (setq n 0 l 0)
  6. (while (<= (setq n (1+ n)) (strlen str))
  7.    (cond
  8.      ((member (setq c (substr str n 1)) '("\t" " ")) (setq m n))
  9.      ((member c '("\n")) (setq l n))
  10.    )
  11.    (if (and (> (- n l) len) m)
  12.      (setq str (strcat (substr str 1 (1- m)) "\n" (substr str (1+ m)))
  13.            l m
  14.            m nil
  15.      )
  16.    )
  17. )
  18. str
  19. )
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:43:07 | 显示全部楼层
非常感谢所有的建议,我会看看我能做些什么
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:47:42 | 显示全部楼层
大家好,我使用李的函数“字符串包裹”成功地分割了字符串。
 
Irneb我试图使用你的,但dcl文件给了我一个错误。
 
但现在我在垂直限制中得到了一个“大到适合屏幕的对话框”。
 
我会尝试制作一个编辑框。
 
对不起,我是初学者。
 
这是我用来创建dcl的代码
 
  1. (vl-file-delete "C:\\Users\\ricardo.gomes\\Desktop\\Lisp\\info_dcl.dcl")
  2.      (setq fn "C:\\Users\\ricardo.gomes\\Desktop\\Lisp\\info_dcl.dcl")
  3.      (setq fh (open fn "a"))
  4.       (setq a (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 3 (car x)))(entget (namedobjdict))))
  5.             b (vl-remove-if-not '(lambda (x) (= "Nota" (substr x 1 4))) a)             
  6.       );setq
  7.             (princ "\ninfo_dcl : dialog {" fh) ;dialog
  8.             (princ "\n: boxed_column {" fh)    ;boxed column         
  9.   
  10.      (cond
  11.        ((/= nil b)
  12.         (setq num1 1)
  13.         (repeat (length b)
  14.           (setq titl (strcat "Nota" " " (itoa num1))
  15.                 titlo (substr titl 1 (strlen titl))
  16.                        nt1 (cdr (assoc 1 (dictsearch (namedobjdict) titl)))
  17.                 nt1a (substr nt1 (+ (strlen titlo) 4) (strlen nt1))
  18.                 nt2 (cdr (assoc 2 (dictsearch (namedobjdict) titl)))
  19.                 nt3 (cdr (assoc 3 (dictsearch (namedobjdict) titl)))
  20.           );setq
  21.           
  22.                  ;text_part
  23.                 (if
  24.                    (> (strlen nt1) 100)
  25.                    (progn
  26.                       (setq nt1n (LM:StringWrap nt1 100))
  27.                       (princ "\n: paragraph {" fh) ;paragrafo
  28.                       (mapcar '(lambda (x)
  29.                              (princ "\n: text_part {" fh)                 
  30.                              (princ (strcat "\nlabel = " (chr 290) x (chr 290) ";") fh) ;texto
  31.                              (princ "\n}" fh);fim text_part         
  32.                            ) nt1n
  33.                         );mapcar
  34.                      (princ "\n}" fh);fim text_part
  35.                      );progn
  36.                     (progn
  37.                     (princ "\n: text_part {" fh)  
  38.                     (princ (strcat "\nlabel = " (chr 290) nt1 (chr 290) ";") fh)
  39.                     (princ "\n}" fh);fim text_part
  40.                     );progn
  41.                   );if
  42.           
  43.            (princ)
  44.           (setq num1 (+ 1 num1))
  45.          );repeat
  46.            ;;;;;;;botões
  47.           ; (princ (strcat "\nkey = " (chr 290)"accept"(chr 290) ";") fh) chr 290 caracter para aspas
  48.            (princ "\nok_only;" fh);
  49.            (princ "\n}" fh);
  50.            (princ "\n}" fh);
  51.         )
  52.        );cond
  53.        (princ)
  54.       (close fh)

 
此代码在使用的图形中创建此dcl
 
  1. info_dcl : dialog {
  2. : boxed_column {
  3. : paragraph {
  4. : text_part {
  5. label = "Nota 1 - 30/11/2011 16:22 - O Eng. João Nunes deu-me este ficheiro de um arranjo urbanistico do";
  6. }
  7. : text_part {
  8. label = "largo do poço à entrada de juromenha para fazer uns perfis a mando do arq. Rui rodrigues.";
  9. }
  10. }
  11. : paragraph {
  12. : text_part {
  13. label = "Nota 2 - 14/12/2011 11:36 - Foram definidos os materiais e os equipamentos a partir do orçamento do";
  14. }
  15. : text_part {
  16. label = "josé pedro.";
  17. }
  18. }
  19. : paragraph {
  20. : text_part {
  21. label = "Nota 3 - 19/12/2011 11:24 - Foi finalizada a primeira proposta, falta ainda definir o titulo do";
  22. }
  23. : text_part {
  24. label = "projeto, esse nome vai-me ser dado pelo Sr. Pacheco.";
  25. }
  26. }
  27. : paragraph {
  28. : text_part {
  29. label = "Nota 4 - 20/12/2011 09:09 - Após conversa com o Sr. Pacheco e o Eng. João Nunes foi decidido fazer";
  30. }
  31. : text_part {
  32. label = "uma nova proposta recuando a zona dos estacionamentos aproximadamente 70cm, esta alteração é devido";
  33. }
  34. : text_part {
  35. label = "ao aumento da faixa de rodagem definido noutro projeto.";
  36. }
  37. }
  38. : paragraph {
  39. : text_part {
  40. label = "Nota 5 - 20/12/2011 14:25 - Foi terminada a proposta da nota anterior, foi também incluido o tubo";
  41. }
  42. : text_part {
  43. label = "de esgotos no pormenor, criei um ficheiro com esta ultima alteração e meti na rede da Ana simão";
  44. }
  45. : text_part {
  46. label = "para ela começar a fazer a memória descritiva.";
  47. }
  48. }
  49. : paragraph {
  50. : text_part {
  51. label = "Nota 6 - 21/12/2011 10:09 - O projeto foi revisto pelo sr. pacheco, foram feitas novas medições";
  52. }
  53. : text_part {
  54. label = "para o joão piteira, foram adicionadas imagens das mesas e das vedações á legenda do desenho, o";
  55. }
  56. : text_part {
  57. label = "lancil de betão deixo de ser com aresta viva.";
  58. }
  59. }
  60. : paragraph {
  61. : text_part {
  62. label = "Nota 7 - 21/12/2011 11:40 - Foi impressa uma cópia dos dois desenhos, foi também criada uma cópia";
  63. }
  64. : text_part {
  65. label = "do ficheiro com o nome 6-7.dwg para enviar ao joão nunes, este ficheiro vai servir para ficar numa";
  66. }
  67. : text_part {
  68. label = "pasta com o projeto completo. O ficheiro 6-7.dwg foi enviado ao joão nunes.";
  69. }
  70. }
  71. : paragraph {
  72. : text_part {
  73. label = "Nota 8 - 21/12/2011 13:33 - Foram mudadas as designações e dimensões das camadas da zona do";
  74. }
  75. : text_part {
  76. label = "estacionamento, foi novamente gravado um ficheiro com o nome 6-7.dwg e enviado para o eng. joão";
  77. }
  78. : text_part {
  79. label = "nunes.";
  80. }
  81. }
  82. : paragraph {
  83. : text_part {
  84. label = "Nota 9 - 21/12/2011 14:01 - Foram criados ficheiros dwf dos layouts, 6.dwf e 7.dwf enviados para o";
  85. }
  86. : text_part {
  87. label = "eng. joão nunes.";
  88. }
  89. }
  90. : paragraph {
  91. : text_part {
  92. label = "Nota 10 - 22/12/2011 09:40 - Foi alterado o comprimento do lancil em betão de 1.2m para 1.0m no";
  93. }
  94. : text_part {
  95. label = "desenho do pormenor, foi impressa uma cópia do layout e foi criado o ficheiro 6-7.dwg e o ficheiro";
  96. }
  97. : text_part {
  98. label = "7.dwf para enviar ao eng. João Nunes.";
  99. }
  100. }
  101. : paragraph {
  102. : text_part {
  103. label = "Nota 11 - 22/12/2011 10:31 - Foi alterado o grafismo do xisto a cutelo, foi alterada também a";
  104. }
  105. : text_part {
  106. label = "designação da legenda em planta de xisto em cutelo para xisto a cutelo, foi impressa uma cópia";
  107. }
  108. : text_part {
  109. label = "somente do pormenor, foi gravado novamente o ficheiro 6-7.dwg e o 6.dwf e 7.dwf para enviar ao eng.";
  110. }
  111. : text_part {
  112. label = "João Nunes.";
  113. }
  114. }
  115. : text_part {
  116. label = "Nota 12 - 26/12/2011 14:31 - Foi impressa uma cópia para a maria do carmo.";
  117. }
  118. ok_only;
  119. }
  120. }
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:48:20 | 显示全部楼层
鉴于你的文本如此之大,我认为你最好的选择是使用并编辑_框。这样你就会得到一个滚动条,滚动条上的文字跨度远远超过屏幕显示的范围。
 
出现过大对话框的原因是您正在设置标签,然后该标签确定文本平铺的宽度/高度。我会将高度设置为指定的行数,将宽度设置为所需的行长度。然后我将设置值而不是标签-因此不适合允许的空间的文本将无法显示。
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:53:42 | 显示全部楼层
我只能明天回答,我现在得走了
 
谢谢
回复

使用道具 举报

6

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 08:57:03 | 显示全部楼层
谢谢你的提示irneb,我会搜索如何做到这一点。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 07:49 , Processed in 0.600062 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表