Re: [Win32Lib] ComboBox drop-down doesn't move with window
- Posted by Dan Moyer <DANIELMOYER at prodigy.net> Jan 31, 2003
- 456 views
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! >