Re: [Win32Lib] ComboBox drop-down doesn't move with window
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!
>
|
Not Categorized, Please Help
|
|