Toda ajuda é bem vinda sim.
Beleza, colega. Pois eu por enquanto, conheço algo de HMG e talvez as vezes soe que quero te empurrar algo...
Esse seu exemplo mostra o TREE, comandos de Change e click, mas não tem como buscar um ITEN
Sim, mas te dá a idéia de você disponibilizar um botão de "Busca". E ao clicar você poderia chamar a função que eu mencionava anteriormente.
O Tree acho que já é um VETOR multidimencional
Pode ser que internamente esteja armazenado em forma de matriz, mas aí teria que conhecer a fundo o mecanismo e nomes das variáveis internas do TREE. Em HMG existe uma matriz que guarda informações importantes, mas é desaconselhádo, manipulá-las. De todas formas, eu dizia para você primeiramente criar um VETOR unidiensional contendo a descrição (título) de cada item do TREE e no momento que você está declarando cada NODE você utilizaria o vetor em lugar da string/descrição de cada item. Daí você teria os dados em vetor, mais fácil de localizar. <Veja por exemplo a linha: 31,32,33,34... onde está entre aspas>
porem preciso saber quais as dimensões certa para fazer a busca na parte certa do vetor
Para saber a quantidade em HMG é só utilizar ItemCount que retornar quantos elementos tem. <Veja linha 57 do meu código>
e dar o focu no tree que tiver a posição que eu achar.
Após você obter a posição do item que está "buscando", fica fácil. Na minha opinião bastaria você atribuir esse valor obtido do ASCAN (ou fazer através do laço com FOR I=1 TO ItemCount e ver qual elemento atende a busca) à propriedade "Value" do TREE. <veja linhas: 7 e 9 atribuindo e 21 e 23 onde define a posição inicial (focus, digamos)>
Se tiver um exemplo de busca lhe agradeço, se for em Hwgui melhor ainda.
Estou disponibilizando abaixo o código em HMG do Help do STRU que ja tinha disponibilizado na seção Downloads. Lamentavelmente ainda não mexo com HwGUi como comentei no início. Mas acho que dei uma idéia de como fazer, talvez você fazendo e postando eu possa também acompanhar.
Código: Selecionar todos
Function Help()
If IsWindowActive(Win_2)
DoMethod("Win_2","SetFocus")
Return nil
Endif
If Empty(cTexto)
nItem:=2
Else
nItem:=3
Endif
DEFINE WINDOW Win_2 ;
AT 0,0 ;
WIDTH 750 ;
HEIGHT 500 ;
TITLE 'Ajuda STRU' ;
ICON "STRU.ICO" ;
ON KEY ESCAPE ACTION thiswindow.release()
DEFINE TREE Tree_1 AT 10,10 WIDTH 220 HEIGHT 380 ;
VALUE nItem ;
NODEIMAGES { "file_closed.bmp", "file_open.bmp" } ;
ON CHANGE Mostra(Win_2.Tree_1.Value)
@ 010,240 IMAGE Image_1 ;
PICTURE 'Select1.bmp' ;
WIDTH 490 ;
HEIGHT 440 ;
ONCLICK MsgInfo("TESTE")
NODE 'Procedimentos' IMAGES { "book_closed.bmp", "book_open.bmp" }
TREEITEM 'Selecionar' IMAGES {'select.bmp'}
NODE 'Redirecionar' IMAGES {'redirect.bmp'}
TREEITEM 'Tela' IMAGES {'screen.bmp'}
TREEITEM 'Arquivo' IMAGES {'file.bmp'}
TREEITEM 'Clipboard' IMAGES {'clipboard.bmp'}
TREEITEM 'Impressora' IMAGES {'printer.bmp'}
END NODE
TREEITEM 'Sair' IMAGES {'quit.bmp'}
END NODE
NODE 'Na Linha de comando' IMAGES {"console.bmp"}
TREEITEM 'Chamar em modo gráfico' IMAGES {'execute.bmp'}
NODE 'Selecionar DBFs' IMAGES {'select.bmp'}
TREEITEM 'Todos os DBFs'
TREEITEM 'DBF pre-definido'
TREEITEM 'Com o caminho e todos DBFs'
END NODE
NODE 'Direcionar saída da listagem' IMAGES {'redirect.bmp'}
TREEITEM 'Para a Tela'
TREEITEM 'Para a Área de Transferência'
TREEITEM 'Para a Impressora padrão'
TREEITEM 'Para Arquivo pre-definido'
END NODE
TREEITEM 'Ajuda' IMAGES {'help.bmp'}
END NODE
END TREE
FOR I=1 TO Win_2.Tree_1.ItemCount
Win_2.Tree_1.Expand( I )
NEXT
END WINDOW
CENTER WINDOW Win_2
ACTIVATE WINDOW Win_2
Return Nil
Function Mostra(nFig)
Do Case
Case nFig=1
Win_2.Image_1.Picture := 'Select1.png'
Case nFig=2
Win_2.Image_1.Picture := 'Select1.bmp'
Case nFig=3
Win_2.Image_1.Picture := 'Select2.bmp'
Case nFig=4
Win_2.Image_1.Picture := 'Select3.bmp'
Otherwise
Win_2.Image_1.Picture := 'Select1.bmp'
EndCase
Return nil