Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Treeview via teclado
Message
From
27/10/2003 12:16:43
 
 
To
27/10/2003 11:29:19
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Miscellaneous
Thread ID:
00842999
Message ID:
00843054
Views:
26
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
"Now to him who is able to do immeasurably more than all we ask or imagine, according to his power that is at work within us, Ephesians 3:20
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform