Re: [Win32Lib] ComboBox drop-down doesn't move with window

new topic     » goto parent     » topic index » view thread      » older message » newer message

Judith,

Well, not exactly:  your clever & simple method works only if the user
*selects* an item in the scrolled down list (& then re-opens the list), in
which case the selected item will be the topmost item on move the window,
even if it wasn't the topmost previously; but if you scroll the 2nd combo
list down, but do *not* select anything new in it, I think that on moving
the window I should be able to get the new *scrolled* position to re-show.

So what I don't get is why the "CB_GETTOPINDEX" doesn't work, because it's
supposed to get  the index of the topmost *showing* item on the list.

Oh, and taking a hint from you, I did also move the test into w32HEvent,
using your code in IDE as an example :)

Dan

----- Original Message -----
From: "Judith Evans" <camping at txcyber.com>
To: "EUforum" <EUforum at topica.com>
Sent: Thursday, January 30, 2003 6:33 AM
Subject: Re: [Win32Lib] ComboBox drop-down doesn't move with window


>
> Hi Dan,
>
> See if this does what you want. I also changed w32HPaint to w32HEvent so
the
> colapse and reshow of the combos would not happen when resizing the main
> window.
>
> --  code generated by Win32Lib IDE v0.14.2
>
> include Win32lib.ew
> without warning
>
> --------------------------------------------------------------------------
--
> ----
> --  Window Window1
> constant Window1 = createEx( Window, "Window1", 0, Default, Default, 400,
> 300, 0, 0 )
> constant Combo2 = createEx( Combo, "Combo2", Window1, 44, 64, 148, 420*6,
0,
> 0 )
> constant Combo4 = createEx( Combo, "Combo4", Window1, 208, 64, 148, 20*6,
0,
> 0 )
> ---------------------------------------------------------
> --------------------------------------------------------------------------
--
> ----
> object dummy
>
> --------------------------------------------------------------------------
--
> ----
> procedure Window1_onEvent (integer self, integer event, sequence
> --procedure Window1_onPaint (integer self, integer event, sequence
> params)--params is ( int x1, int y1, int x2, int y2 )
> int result,index,index2
> if params[1]=WM_MOVE then
>     --find active index
>   index=getIndex(Combo2)
>   index2=getIndex(Combo4)
>   result = sendMessage ( Combo2, CB_GETDROPPEDSTATE , 0, 0 )
>   if result = 1  then
>        dummy = sendMessage(Combo2, CB_SHOWDROPDOWN, False,0)
>        dummy = sendMessage(Combo2, CB_SHOWDROPDOWN, True,0)
>
>
>   end if
>   index2=getIndex(Combo4)
>   result = sendMessage ( Combo4, CB_GETDROPPEDSTATE , 0, 0 )
>   if result = 1  then
>        dummy = sendMessage(Combo4, CB_SHOWDROPDOWN, False,0)
>        dummy = sendMessage(Combo4, CB_SHOWDROPDOWN, True,0)
>
>
>   end if
>   setIndex(Combo2,index)
>   setIndex(Combo4,index2)
>
> end if
> end procedure
> --setHandler( Window1, w32HPaint, routine_id("Window1_onPaint"))
> setHandler( Window1, w32HEvent, routine_id("Window1_onEvent"))
> --------------------------------------------------------------------------
--
> ----
> procedure Window1_onActivate (integer self, integer event, sequence
> params)--params is ()
>   for n = 1 to 15 do
>    addItem( Combo2, "Item" & sprint(n) )
>   end for
>
>     dummy = sendMessage(Combo2, CB_SHOWDROPDOWN, False,0)
>   dummy = sendMessage(Combo2, CB_SHOWDROPDOWN, True,0)
>     setIndex( Combo2, 1 )
>
>   for n = 1 to 15 do
>     addItem( Combo4, "Item" & sprint(n) )
>
>   end for
>    setIndex( Combo4, 1 )
>
> end procedure
> setHandler( Window1, w32HActivate, routine_id("Window1_onActivate"))
>
>
> WinMain( Window1,Normal )
>
> >>But now I see another problem:
> >>if a drop-down list has been scrolled downward, & the window it's in is
> >>moved, it would be nice to have the list be shown after the move just as
> it
> >>was before; so I tried to use "CB_GETTOPINDEX", which is supposed to get
> the
> >>index of the topmost *showing* item on the list. But when I do so, I
> always
> >get a return of "0", instead of the zero based index of the topmost
showing
> >>item. Anyone have any idea what I'm doing wrong?
>
> >>Dan Moyer
>
>
>
> TOPICA - Start your own email discussion group. FREE!
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu