OpenDCL Forums

OpenDCL => Runtime/AutoLISP => Topic started by: mging63 on November 16, 2010, 10:59:54 AM

Title: Problem with my Lisp
Post by: mging63 on November 16, 2010, 10:59:54 AM
I try for many hours to solve this problem. I want to reset a checkbox in initialize and can't apply this. When i start my lisp, a message appear : insufficient number of arguments. I can't see what's appen.

This is my lisp:

(defun C:QD ( / )
(command "OPENDCL")
(dcl_Project_Load "Quickdraw")
(dcl_Form_Show Quickdraw_Pal)
(princ)
)
(defun c:QuickDraw_Pal_OnInitialize (Value /)
  (dcl_Control_SetValue QuickDraw_Pal_Top-Lt 0)
  (dcl_Control_SetValue QuickDraw_Pal_Top-Lt-1 0)
)

;Vue top-lt
(defun c:QuickDraw_Pal_Top-Lt_OnClicked (Value /)
  (setq Top-Lt1 (dcl_Control_Getvalue QuickDraw_Pal_Top-Lt))
)

(defun c:QuickDraw_Pal_Top-Lt-1_OnClicked (Value /)
  (setq Top-Lt-on (dcl_Control_Getvalue QuickDraw_Pal_Top-Lt-1))
)

(defun c:QuickDraw_Pal_OK_OnClicked (/)
  (dcl_Form_Close Quickdraw_Pal)
)

;|«Visual LISP© Format Options»
(80 2 50 2 nil "end of " 80 50 2 0 2 nil nil nil T)
;*** DO NOT add text below the comment! ***|;


My program is not finish, but i stop with this problem.

Another question: Is that the picture box control can turn gray when you click inside?

I'm a novice.

Thanks
Title: Re: Problem with my Lisp
Post by: BazzaCAD on November 16, 2010, 11:22:23 AM
None of your events should have a "Value" arguments passed to them:

(defun c:QuickDraw_Pal_OnInitialize (Value /)

(defun c:QuickDraw_Pal_Top-Lt_OnClicked (Value /)

(defun c:QuickDraw_Pal_Top-Lt-1_OnClicked (Value /)

Did you use the "Clipboard Copy" option from the Events tab to copy your code over?
They wouldn't be there if so...
Title: Re: Problem with my Lisp
Post by: BazzaCAD on November 16, 2010, 11:28:29 AM
To change a pic. box color to gray on click, you'd do something like this:

Code (autolisp) Select

(defun c:Untitled_Form1_PictureBox1_OnClicked (/)
  (dcl_Control_SetBackColor Untitled_Form1_PictureBox1 9)
)


See here for color options:
http://www.opendcl.com/HelpFiles/index.php?page=Reference/DataType/Color.htm (http://www.opendcl.com/HelpFiles/index.php?page=Reference/DataType/Color.htm)
I used Acad color 9 or you may want to use something like -16 for the windows button face gray color...
Title: Re: Problem with my Lisp
Post by: mging63 on November 16, 2010, 11:34:13 AM
The only arguments that have "Value" in my events is

(defun c:QuickDraw_Pal_Top-Lt-1_OnClicked (Value /)

I use "Clipboard copy" but i modify to test the problem.

I correct the lines and a message appear:

An OpenDCL function argument processing exception has occured!
Error: Invalis argument
Function: dcl_Control_Setvalue
Argument: 0

Property <Value> not found
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 16, 2010, 01:36:28 PM
The error message means the control does not have a 'Value' property. Check the control name, and make sure you don't have multiple controls with the same name.
Title: Re: Problem with my Lisp
Post by: mging63 on November 17, 2010, 05:48:08 AM
 ??? Ok, i work on my code and always arguments problems. I can't see what's appen.
There is my code:

(DEFUN C:QD (/)
  (COMMAND "OPENDCL")
  (DCL_PROJECT_LOAD "Quickdraw")
  (DCL_FORM_SHOW Quickdraw_Pal)
  (PRINC)
)
(setvar "cmdecho" 1)
(DEFUN c:QuickDraw_Pal_OnInitialize (/)
  (DCL_CONTROL_SETVALUE QuickDraw_Pal_Top-Lt 0)  ;reset control Top-Lt à OFF
  (DCL_CONTROL_SETVALUE QuickDraw_Pal_Top-Lt-1 0);reset chexbox Top-Lt-1 à OFF
  (DCL_CONTROL_SETVALUE QuickDraw_Pal_Top 0)     ;reset control Top à OFF
  (DCL_CONTROL_SETVALUE QuickDraw_Pal_Top-1 0)   ;reset chexbox Top-1 à OFF
)

;Vue top-lt
(DEFUN c:QuickDraw_Pal_Top-Lt_OnClicked (/)
  (SETQ Top-Lt1 (DCL_CONTROL_GETVALUE QuickDraw_Pal_Top-Lt))
  (dcl_Control_SetBackColor QuickDraw_Pal_Top-Lt -11)
)

(DEFUN c:QuickDraw_Pal_Top-Lt-1_OnClicked (/)
  (SETQ Top-Lt-on (DCL_CONTROL_GETVALUE QuickDraw_Pal_Top-Lt-1))
)

;Vue Top
(DEFUN c:QuickDraw_Pal_Top_OnClicked (/)
  (SETQ Top_1 (DCL_CONTROL_GETVALUE QuickDraw_Pal_Top))
  (if
    (= Top_1 1)
      (DCL_CONTROL_SETBACKCOLOR QuickDraw_Pal_Top 9)
      (DCL_CONTROL_SETBACKCOLOR QuickDraw_Pal_Top -6)
  )


(DEFUN c:QuickDraw_Pal_Top-1_OnClicked (/)
  (SETQ Top-1-on (DCL_CONTROL_GETVALUE QuickDraw_Pal_Top-1))
)

(DEFUN c:QuickDraw_Pal_OK_OnClicked (/)
  (DCL_FORM_CLOSE Quickdraw_Pal)
)

;|«Visual LISP© Format Options»
(80 2 50 2 nil "end of " 80 50 2 0 2 nil nil nil T)
;*** DO NOT add text below the comment! ***|;
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 17, 2010, 06:23:53 AM
Look at each of your Clicked events in the events tab and compare those event handler function names to the functions in your code.  You will see that they do not match.  It also looks like some of them were originally added while the form was named "Form1".  You probably should reset event handler names via Tools -> Reset Event Names.

The SetValue problem is due to calling the function on a picturebox control, which does not have a Value property.  You probably intended to call it on the checkbox control instead.

Does that help?
Title: Re: Problem with my Lisp
Post by: mging63 on November 17, 2010, 11:03:37 AM
After resetting my events and correct the code, always the same problem!

This is my last code.
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 17, 2010, 04:30:15 PM
It looks like your code still has errors. There is no property name specified for (DCL_GETPROPERTY), and it looks like you are passing a picturebox control instead of a checkbox to (DCL_GETVALUE).
Title: Re: Problem with my Lisp
Post by: mging63 on November 19, 2010, 08:14:39 AM
Is anyone can debug my lisp?

Thanks in advance.
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 19, 2010, 08:24:48 AM
Attach your current .odcl and .lsp to a post, and I'm sure someone will help.
Title: Re: Problem with my Lisp
Post by: mging63 on November 19, 2010, 10:12:12 AM
This is the last codes
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 19, 2010, 10:46:30 AM
I suggest you see if you can fix the code on your own.  Start by cleaning up the inconsistent naming in your .odcl file.  Select each control and remove the (VarName) override, then make sure the control's Name is uniform and consistent.  I have a feeling that the naming issues are a big part of your problems.

Once the names are corrected, choose Tools -> Reset Event Names and reset all controls, then save your file.  Next, copy and paste the event name for each event handler function to ensure your lisp uses the correct function name.  Next, fix the symbol name for each control in your lisp function calls (this should be very easy if you followed a uniform naming convention).

I hope this helps.
Title: Re: Problem with my Lisp
Post by: mging63 on November 19, 2010, 12:28:20 PM
Thanks for your help. Fisr, I remove all (VarName) in my odcl. Second i reset Events. Third i copy events of all controls and past in my lisp file. I think that i've fix name of control. Still the problem. Sorry

Thanks
Title: Re: Problem with my Lisp
Post by: owenwengerd on November 19, 2010, 01:21:11 PM
Take a look at the attached version. Hopefully this gets you going in the right direction.