1. 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.

new topic     » topic index » view message » categorize

2. RE: Treeview Rant !

> -----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

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

3. RE: Treeview Rant !

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.
> 
>

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

Search



Quick Links

User menu

Not signed in.

Misc Menu