How to set Text for TextBox in Lisp?

Started by MiD-AwE · 2013-10-15 21:01 UTC · 5 replies · SMF topic #2045

Hi all,

I've been bummin' around here for a long time. I search for answers but I need very basic understanding now and cannot find how to do what I need. My ignorance is to blame.

I have a TextBox that I need to always display the value of a Global variable. When the user edits the text in the TextBox, I want to change the Global variable to the value set by the user and the TextBox needs to continue displaying the value from the Global.

I have tried to follow the tutorial but I do not know what I'm needing to do to set the Text in the TextBox OnInitialize.

I got the code from the "Control Browser" but it looks like jargon and I have not been able to interpret what I must customize to make it work.

(dcl_Control_SetProperty CNTRL-PNL_CPL-CAD_AccessTextBox PropertyApiName [as String] NewValue [as Varies])

The tutorial leads me to believe I need to change "PropertyApiName [as String]" but what must go there? And, What do I do with "NewValue [as Varies]".

My global is *ACCESS*.

Also, how do I trigger a regen on my drawing if/when the TextBox is edited.

Thank you for any suggestions/advice/help.
author=MiD-AwE link=topic=2045.msg10089#msg10089 date=1381870911 wrote:
....(dcl_Control_SetProperty CNTRL-PNL_CPL-CAD_AccessTextBox PropertyApiName [as String] NewValue [as Varies])....

"dcl_Control_SetProperty ...... PropertyApiName" is the base command where you can set "all properties". In your case you should try the function for modifying the caption

a) with text:
(dcl_Control_SetCaption CNTRL-PNL_CPL-CAD_AccessTextBox "hello, this is a test")
b) with variable:
(dcl_Control_SetCaption CNTRL-PNL_CPL-CAD_AccessTextBox myVariable)
Try it - no guarantee.
Thank you Peter2.

So if I'm understanding this better, "PropertyApiName [as String]" is all one thing, not "PropertyApiName" with "[as String]" being separate, and; "NewValue [as Varies]" is also only one thing? Therefore, "PropertyApiName [as String]" is only asking for a string nothing more?

Let me run with that and see if I'm jumping to conclusions.

Thanks again.
Ok,

I now have:

(defun c:CNTRL-PNL_CPL-CAD_OnInitialize (/)
  (dcl_Control_SetProperty CNTRL-PNL_CPL-CAD_AccessTextBox "Text" *ACCESS*)
)

And, that appears to work as expected. Also, I have:

(defun c:CNTRL-PNL_CPL-CAD_AccessTextBox_OnReturnPressed (/)
  (vlax-ldata-put "JOB" "ACCESS" (DCL_CONTROL_GETTEXT CNTRL-PNL_CPL-CAD_AccessTextBox))
  (SETQ *ACCESS* (DCL_CONTROL_GETTEXT CNTRL-PNL_CPL-CAD_AccessTextBox))
  (vlax-invoke-method (vla-get-ActiveDocument (vlax-get-Acad-Object)) 'SendCommand "regen")
)

That appears to be working correctly as well. Should I be doing this differently?

Thank you very much for the clarifying comment Peter2.
author=MiD-AwE link=topic=2045.msg10096#msg10096 date=1381937301 wrote:
...Therefore, "PropertyApiName [as String]" is only asking for a string nothing more?...

In your second post I see that you have understand, and yes

- the text [inside the brackets] is a description (of the format) what should be used before the . You have to delete all things that are [inside the brackets]

- the text 'before the brackets' [] is a placeholder for the function / command / feature which you have to define.

Easy, isn't it?
Thank you.

Yeah it's pretty easy once the initial understanding is overcome. Since I work with A/VLISP in VLIDE I'm used to every jot and tittle, including spaces, representing the exact syntax.

I'm on my way now!  :)

Again Thank you, this is a big help.