1. Enhanced IDE control ordering

I have a set of two controls, a label and a checkbox.  For now, assume the two
controls are not related by code in any way.  I want to "click" the label and
have it function as if it were a click of the checkbox.  No problem, using code
similar to:

myLabel_onClick(.....)
   myCheckbox_onClick(.....)

However, the IDE builds the exw file with the myLabel code before the myCheckbox
code and then complains that myCheckbox_onClick has not been declared. If I go
into the exw file and manually place the myCheckbox_onClick code before the
myLabel_onClick code, it works fine.

So I went into Generate Tools|Change control order for program and moved myLabel
well below myCheckbox.  The exw file is built in the same order, as if my manual
re-ordering has no effect.

The language at the top of the Control Order window says:

Use this window to establish the order of controls by window for the output
EX(W) file.  Order is order controls are on Window OR the last reordering by
user. Changing order does not alter the order of controls in Project View.

Well, how do I tell the computer that I really, really want it to be "the last
reordering by user" and not "order controls are on Window"?

I know a workaround is to put a routine in the General section and call it from
each of the two controls, but that would make my General section unmanageable by
the time I got done.

Thanks

Mike

new topic     » topic index » view message » categorize

2. Re: Enhanced IDE control ordering

Mike777 wrote:
> 
> I have a set of two controls, a label and a checkbox.   
> However, the IDE builds the exw file with the myLabel code before the
> myCheckbox
> code and then complains that myCheckbox_onClick has not been declared. 
This works without changing anything in reorder controls.
 
include Win32Lib.ew
without warning

--------------------------------------------------------------------------------
--  Window Window1
constant Window1 = createEx( Window, "Window1", 0, Default, Default, 400, 300,
0, 0 )
constant LText3 = createEx( LText, "LText3", Window1, 48, 24, 148, 20,
w32or_all({SS_NOTIFY}), 0 )
constant CheckBox2 = createEx( CheckBox, "CheckBox2", Window1, 76, 60, 148, 20,
0, 0 )
---------------------------------------------------------
--------------------------------------------------------------------------------
procedure LText3_onClick (integer self, integer event, sequence params)--params
is ()
	setCheck(CheckBox2, w32True)
end procedure
setHandler( LText3, w32HClick, routine_id("LText3_onClick"))
--------------------------------------------------------------------------------
procedure CheckBox2_onClick (integer self, integer event, sequence
params)--params is ()
	if not isChecked(CheckBox2) then
VOID=message_box("is not checked now","",0)		
	end if
end procedure
setHandler( CheckBox2, w32HClick, routine_id("CheckBox2_onClick"))
---------------------------------------------------------


WinMain( Window1,Normal )

> So I went into Generate Tools|Change control order for program and moved
> myLabel
> well below myCheckbox.  The exw file is built in the same order, as if my
> manual
> re-ordering has no effect.

I tested the above project and used reordering such that label was after the
checkbox and ran the project. Looking at the exw the label is now after the
checkbox.

> Thanks
> 
> Mike

judith

new topic     » goto parent     » topic index » view message » categorize

3. Re: Enhanced IDE control ordering

> Mike777 wrote:
>  
> I have a set of two controls, a label and a checkbox.   
> However, the IDE builds the exw file with the myLabel code before the
> myCheckbox
> code and then complains that myCheckbox_onClick has not been declared. 

> So I went into Generate Tools|Change control order for program and moved
> myLabel
> well below myCheckbox.  The exw file is built in the same order, as if my
> manual
> re-ordering has no effect.
> 
Ah, I may have overlooked something in my answer. When you reorder the controls
only the createEx statements are reordered. The event coding does not change
order.

You can use an invokeHandler statement in your LText_onClick routine in order to
trigger the CheckBox_onClick.

> Mike
 
judith

new topic     » goto parent     » topic index » view message » categorize

4. Re: Enhanced IDE control ordering

Judith Evans wrote:
> 
> > Mike777 wrote:
> >  
> > I have a set of two controls, a label and a checkbox.   
> > However, the IDE builds the exw file with the myLabel code before the
> > myCheckbox
> > code and then complains that myCheckbox_onClick has not been declared. 
> 
> > So I went into Generate Tools|Change control order for program and moved
> > myLabel
> > well below myCheckbox.  The exw file is built in the same order, as if my
> > manual
> > re-ordering has no effect.
> > 
> Ah, I may have overlooked something in my answer. When you reorder the
> controls
> only the createEx statements are reordered. The event coding does not change
> order.
> 
> You can use an invokeHandler statement in your LText_onClick routine in order
> to trigger the CheckBox_onClick.

Wonderful.  Exactly what I needed, almost.

If you are ready for a typical "story" from me, please read on.

I suppose this has something to do with the way I've programmed the procedures,
but I needed to insert a sleep(1) into the label click procedure to make
everything "work" (and by "work" I mean make it functional - I don't think I can
leave it this way in a production app).

My label click procedure now looks like this:

procedure lblchkMyCheck_onClick (integer self, integer event, sequence params)
atom myAtom
setCheck(chkMyCheck,not(isChecked(chkMyCheck)))
sleep( 1)
myAtom = invokeHandler(chkMyCheck,w32HClick,{})
end procedure


My handler does a lot of things, one of which is to repaint virtually every
control on the screen (if that matters), along with present the results of a
calculation in a textbox (just one of many controls on the screen).

If I pull out the sleep(1) line, then the system does something that seems like
there is a bit of code somewhere I've forgotten about (which I generally refer to
as a poltereist), because the above code runs twice, the first time with the
value of chkMyCheck appropriately changed from what it started out as and the
second time with the opposite.  That is, the second time it is run with the value
of chkMyCheck exactly as chkMyCheck started, thereby putting a result on the
screen which is the same as when I started (obviously a bit unproductive),
complete with the check mark appearing for an instant and then resetting itself
back to how it started.

If I insert any CPU halting mechanism at any point in time (a sleep command, or
a message box) then the second execution is not done, the check box is
appropriately changed and the value is the correct (updated) value.

As another hint as to what is going on, if I remove the sleep and message box
commands, I can still get it to work, if I click on the label and hold down the
left click button for a full second before letting it up.

I could understand how holding the left click button down might cause the event
to be registered twice, but this is the exact opposite.  By clicking quickly and
lightly it executes twice.  By clicking once (very slowly and heavily) it only
executes once.  Baffling to me.

If that is enough information to trigger somebody's (terrible) memory of
something similar I'd love to hear about it.

Thanks

Mike

new topic     » goto parent     » topic index » view message » categorize

5. Re: Enhanced IDE control ordering

Mike777 wrote:
 SNIP 
> 
> I could understand how holding the left click button down might cause the
> event
> to be registered twice, but this is the exact opposite.  By clicking quickly
> and lightly it executes twice.  By clicking once (very slowly and heavily) it
> only executes once.  Baffling to me.
> 
> If that is enough information to trigger somebody's (terrible) memory of
> something
> similar I'd love to hear about it.
> 
> Thanks
> 
> Mike
>SNIP

Could it be your mouse is malfunctioning?
Most annoying if your mouse doesn't act exactly as expected.
Just an idle thought.

new topic     » goto parent     » topic index » view message » categorize

6. Re: Enhanced IDE control ordering

David Stevenson wrote:
> 
> Mike777 wrote:
>  SNIP 
> > 
> > I could understand how holding the left click button down might cause the
> > event
> > to be registered twice, but this is the exact opposite.  By clicking quickly
> > and lightly it executes twice.  By clicking once (very slowly and heavily)
> > it
> > only executes once.  Baffling to me.
> > 
> > If that is enough information to trigger somebody's (terrible) memory of
> > something
> > similar I'd love to hear about it.
> > 
> > Thanks
> > 
> > Mike
> >SNIP
> 
> Could it be your mouse is malfunctioning?
> Most annoying if your mouse doesn't act exactly as expected.
> Just an idle thought.

At this point, anything is possible.

I just checked and it appears to be working just like the other two I just
plugged in, as well as testing with the mousepad on the laptop (my regular mouse
is a USB mouse).

I thought it might be related to the fact that I have windows explorer set so
that single clicks operate to open a file (normally reserved for double clicks),
but setting that back to requiring double clicks to open a file appears to have
no impact.

Thanks for the suggestion, at least it helped me rule out another couple of
possibilities.

Mike

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu