I'm trying to toggle between two strings of text on a picturebox control when the control is clicked using DrawWrappedText. I've tried several ideas, but I can't get it to work. Anyone got any ideas to what I am doing wrong? Thanks.
Kevin
Kevin,
This is the closest I can get to what I think you want.
By my understanding, the OnPaint event fires on OnMouseEntered, OnMouseMovedOff and OnClicked ( as you can see from the Command line prompt I've added)
SO,
I've removed the DrawWrappedText call from all event traps except for the OnPaint and used a global variable to hold the dynamic text value.
The (dcl_PictureBox_Refresh UpdatePicText_Form1_PictureBox1) call in the OnClicked fixes the text Overdraw issue.
Depending on the complexity of the PictureBox population you MAY need to look at using the PictureBox_StoreImage method to save the piccy except for the Text. (this will need confirmation, 'cause I haven't tried it )
(vl-load-com)
(command "OPENDCL")
(defun c:doit (/ cnt PDRaw_Loc PDRaw_Open ChrFilter_Open )
(setq g:textValue "Original"
g:val 0
)
(dcl_Project_Load "UpdatePicText" T)
(dcl_Form_Show UpdatePicText_Form1)
(dcl_Form_Center UpdatePicText_Form1)
(princ)
)
(defun c:UpdatePicText_Form1_OnClose (UpperLeftX UpperLeftY /)
(setq g:textValue nil
g:val nil )
)
(defun c:UpdatePicText_Form1_PictureBox1_OnPaint (HasFocus /)
(dcl_PictureBox_DrawWrappedText UpdatePicText_Form1_PictureBox1
(list (list 6 3 144 -19 -24 g:textValue 0))
)
(princ (strcat "\n OnPaint Fired :" (itoa (setq g:val (1+ g:val)) )))
)
(defun c:UpdatePicText_Form1_PictureBox1_OnMouseEntered (/)
(dcl_Control_SetBackColor UpdatePicText_Form1_PictureBox1 2)
)
(defun c:UpdatePicText_Form1_PictureBox1_OnMouseMovedOff (/)
(dcl_Control_SetBackColor UpdatePicText_Form1_PictureBox1 1)
)
(defun c:UpdatePicText_Form1_PictureBox1_OnClicked (/)
(if
(= (dcl_Control_GetToolTipTitle UpdatePicText_Form1_PictureBox1) "Old Text")
(setq g:textValue "New Text")
;; else
(setq g:textValue "Old Text")
)
(dcl_PictureBox_Refresh UpdatePicText_Form1_PictureBox1)
(dcl_Control_SetToolTipTitle UpdatePicText_Form1_PictureBox1 g:textValue)
)
Owen,
The wrappedText survived being hidden behind the Properties Dialog, Plot Dialog, CUI editor and a few others I can't remember ..
BUT the NEW and OPEN dialogs wipe out the Text.
I assume this is because they are different technology ... ?
.. and somehow the redraw notification gets lost.
Kerry
Got a sample?
Yes, my Lisp, Kevin's ODCL
Kerry,
This solution works for me. The only change I'll be making is switching dcl_Control_SetBackColor to dcl_Control_SetPicture in the OnMouseEntered and OnMouseMovedOff events.
Thanks for the help!
Kevin