Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Treeview via teclado
Message
From
28/10/2003 06:40:57
 
 
To
27/10/2003 12:16:43
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Miscellaneous
Thread ID:
00842999
Message ID:
00843434
Views:
33
Claudio, consegui uma solução bem mais tranquila dentro do meu contexto - dentro do KeyPress Event, quando o usuário teclar espaço - chr(32) - ele chama o evento click, e tb eu estava com a propriedade enabled como falsa.

Mesmo assim "muchas gracias" :)




>Olá a Fred*.*
>>
>>Estou fazendo uma treeview para exibir alguns dados e fazer uma seleção de um campo - até tudo ok, consegui criar a treeview, colocar as imagens que preciso, criar/abrir/fechar os "nodes"do via mouse.
>>
>>Agora gostaria de dar a opção ao usuário de fazer isso via teclado, quais propriedades/métodos devo tratar isso ? Como fazer?
>>
>>Estou utilizando a COMCTL.TreeCtrl.1 e VFP 7.0
>>
>No metodo rightclick você pode abrir um menu com as opções pro usuário. Algo do tipo:
>
>
>procedure meutreeview.mousedown
>Lparameters button, shift, x, y
>Local loNode
>If  Button = 2  && botao direito do mouse
>    loNode = This.HitTest(x * Thisform.nTreeFactorX, ;
>        Y * Thisform.nTreeFactorX)
>    * se tiver uma node válida , seleciona
>    If  not isnull(loNode)
>        loNode.Selected = .T.
>        *This.NodeClick(loNode)
>    Endif
>    if  type("wform")="U"
>        public wform
>    endif
>    wform                        = thisform
>    Define POPUP shortcut shortcut IN WINDOW form1  MARGIN FROM MROW(), MCOL()
>    Define BAR 1 OF shortcut PROMPT IIF("P"$loNode.key,"\ ","")+"\<Incluir "+alltrim(proper(clients.razaosoc))+" na fila"+iif("O"$loNode.key,""," de "+proper(loNode.text)) FONT 'Arial', 8 style "T"
>    Define BAR 2 OF shortcut PROMPT '\-'
>    Define BAR 3 OF shortcut PROMPT iif("O"$loNode.key,"\<Copiar "+proper(loNode.text),"\ \<Copiar de outro cliente")                           FONT 'Arial', 8 style "T"
>    Define BAR 4 OF shortcut PROMPT '\-'
>    Define BAR 5 OF shortcut PROMPT iif("O"$loNode.key,"E\<xcluir "+proper(loNode.text),"\ E\<xcluir")                                          FONT 'Arial', 8 style "T"
>    On SELECTION BAR 1 OF shortcut wform.incfila(loNode, "INC")
>    On SELECTION BAR 3 OF shortcut wform.incfila(loNode, "COP")
>    On SELECTION BAR 5 OF shortcut wform.excfila(loNode)
>    Activate POPUP shortcut
>    *
>Else
>    * botao esquerdo do mouse
>    loNode = This.HitTest(x * Thisform.nTreeFactorX, ;
>        Y * Thisform.nTreeFactorX)
>    * se tiver uma node válida , seleciona
>    If  not isnull(loNode)
>        loNode.Selected = .T.
>        This.NodeClick(loNode)
>    Endif
>    If  type("loNode.key")="C"
>        If  "O"$loNode.key
>            =thisform.atualiza_dados_fila(loNode)
>        Endif
>    Else
>        Thisform.captadoitem    = .f.
>    Endif
>Endif
>procedure meutreeview.init
>local liHWnd, ;
>	liHDC, ;
>	liPixelsPerInchX, ;
>	liPixelsPerInchY
>#define cnLOG_PIXELS_X      88
>	* From WINGDI.H
>#define cnLOG_PIXELS_Y      90
>	* From WINGDI.H
>#define cnTWIPS_PER_INCH  1440
>	* 1440 twips per inch
>declare integer GetActiveWindow in WIN32API
>declare integer GetDC           in WIN32API ;
>	integer iHDC
>declare integer GetDeviceCaps   in WIN32API ;
>	integer iHDC, integer iIndex
>liHWnd = GetActiveWindow()
>liHDC  = GetDC(liHWnd)
>
>* pegar pixels por polegada
>liPixelsPerInchX = GetDeviceCaps(liHDC, cnLOG_PIXELS_X)
>liPixelsPerInchY = GetDeviceCaps(liHDC, cnLOG_PIXELS_Y)
>Thisform.addproperty("nTreeFactorX", cnTWIPS_PER_INCH/liPixelsPerInchX)
>Thisform.addproperty("nTreeFactorY", cnTWIPS_PER_INCH/liPixelsPerInchY
>
>
>E ainda pelo teclado:
>
>
>procedure meutreeview.keydown
>*** ActiveX Control Event ***
>Lparameters keycode, shift
>If  keycode=46   && excluir do treeview
>    loNode = This.SelectedItem
>    Thisform.excfila(loNode)
>    Return
>Endif
>If  keycode=187     && incluir no treeview
>    loNode = This.SelectedItem
>    If  type("loNode.key")="C"
>        If  "O"$loNode.key
>        Else
>            Thisform.incfila(loNode, "INC")
>        Endif
>    Endif
>    Return
>Endif
>If  keycode=13     && enter
>    loNode = This.SelectedItem
>    If  type("loNode.key")="C"
>        If  "O"$loNode.key
>            =thisform.atualiza_dados_fila(loNode)
>        Endif
>    Endif
>Endif
>
Previous
Reply
Map
View

Click here to load this message in the networking platform