1. RE: Treeview Rant !
- Posted by Derek Parnell <ddparnell at bigpond.com> Apr 24, 2002
- 363 views
euman at bellsouth.net wrote: > Hello all, > > I found what I consider to be a bug in the Treeview control > > consider this bit of code. -> > > elsif iMsg = TVN_KEYDOWN then > vKey = peek(lParam + 12) --struct tagTVKEYDOWN (WORD wVKey) > if vKey = 9 then > SetFocus(futurecontrol) > elsif vKey = 25 then -- should be shift+tab > SetFocus(previouscontrol) > end if > end if > > works really good but what if someone wanted to reverse the taborder > direction > for focus purposes? > > shift+tab "or" shift = 16 + tab = 9 should be vKey = 25 > but this control doesnt handle this in the right way thus returning vKey > = 9 > > you cant go backward from a Treeview control, unless someone can provide > a > work around... > This one way you might like to try: if StandardTabbing then ForwardTab = 9 BackwardTab = 25 else ForwardTab = 25 BackwardTab = 9 end if . . . elsif iMsg = TVN_KEYDOWN then vKey = peek(lParam + 12) --struct tagTVKEYDOWN (WORD wVKey) if vKey = ForwardTab then SetFocus(futurecontrol) elsif vKey = BackwardTab then -- should be shift+tab SetFocus(previouscontrol) end if end if ------------- This hightlights the problems of too much hard-coding. ----- Derek.
2. RE: Treeview Rant !
- Posted by Matthew Lewis <matthewwalkerlewis at YAHOO.COM> Apr 24, 2002
- 373 views
> -----Original Message----- > From: euman at bellsouth.net [mailto:euman at bellsouth.net] > shift+tab "or" shift = 16 + tab = 9 should be vKey = 25 > but this control doesnt handle this in the right way thus > returning vKey = 9 This doesn't seem right. I wouldn't think you'd 'or' the two keys together. Otherwise, there'd be no way to differentiate between shift + a and r: VK_TAB 09h VK_SHIFT 10h VK_A 41h VK_R 52h Have you tried looking for VK_SHIFT, and then VK_TAB? There doesn't seem to be a TVN_KEYUP, so I'm not sure how you could discriminate, unless you figure out who gets the WM_KEY or NM_KEYDOWN notification for the treeview. For some reason, the TVN_KEYUP doesn't pass the shift flags. Matt Lewis
3. RE: Treeview Rant !
- Posted by Derek Parnell <ddparnell at bigpond.com> Apr 24, 2002
- 361 views
euman at bellsouth.net wrote: > Thanks Derek either I dont understand your responce or > you misinterpreted mine. > > 25 is never a returned value in vKey = peek(lParam + 12) > > If I hold down the shift + tab keys at the same time only > the tab key or '9' is returned. > > I might need to use HKM_SETHOTKEY as a work around > My fault. I guess I totally misunderstood your problem. When you wrote "works really good" I assumed that the code example was working to your satisfaction and that you were asking a hypothetical question. Anyhow, if the TreeView notifications don't give you the state of the shift keys, you might have to consider calling either "GetAsyncKeyState" or "GetKeyState" , or maybe even "GetLastInputInfo" to find out if the shift key(s) are down or up. ---- Derek. > ----- Original Message ----- > From: "Derek Parnell" <ddparnell at bigpond.com> > To: "EUforum" <EUforum at topica.com> > Sent: Wednesday, April 24, 2002 1:59 AM > Subject: RE: Treeview Rant ! > > > > euman at bellsouth.net wrote: > > > Hello all, > > > > > > I found what I consider to be a bug in the Treeview control > > > > > > consider this bit of code. -> > > > > > > elsif iMsg = TVN_KEYDOWN then > > > vKey = peek(lParam + 12) --struct tagTVKEYDOWN (WORD wVKey) > > > if vKey = 9 then > > > SetFocus(futurecontrol) > > > elsif vKey = 25 then -- should be shift+tab > > > SetFocus(previouscontrol) > > > end if > > > end if > > > > > > works really good but what if someone wanted to reverse the taborder > > > direction > > > for focus purposes? > > > > > > shift+tab "or" shift = 16 + tab = 9 should be vKey = 25 > > > but this control doesnt handle this in the right way thus returning vKey > > > > > > = 9 > > > > > > you cant go backward from a Treeview control, unless someone can provide > > > > > > a > > > work around... > > > > > > > This one way you might like to try: > > > > if StandardTabbing then > > ForwardTab = 9 > > BackwardTab = 25 > > else > > ForwardTab = 25 > > BackwardTab = 9 > > end if > > > > . . . > > > > elsif iMsg = TVN_KEYDOWN then > > vKey = peek(lParam + 12) --struct tagTVKEYDOWN (WORD wVKey) > > if vKey = ForwardTab then > > SetFocus(futurecontrol) > > elsif vKey = BackwardTab then -- should be shift+tab > > SetFocus(previouscontrol) > > end if > > end if > > > > ------------- > > This hightlights the problems of too much hard-coding. > > > > ----- > > Derek. > >