Erro no Drag and Drop da Htree

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Erro no Drag and Drop da Htree

Mensagem por Luciano Bonfim »

Caros,

criei uma estrutura de árvore e quando tento mover (arrastando e soltando) um NODE que tenha filhos acontece o erro abaixo, e em outros ocasiões ele desmenbra os filhos e coloca todos no mesmo nível.

ERRO:

GOPP - Gerenciamento Orientado para Projetos - Versão: 20100907a
Error BASE/1132 Erro de limite: acesso de array
Called from htree.prg->DRAGDROPTREE(624)
Called from htree.prg->DRAGDROPTREE(630)
Called from htree.prg->HTREE:ONEVENT(437)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(182)
Called from teste.prg->TESTE(34)
Called from generica.prg->EXECUTAHWGUI(293)
Called from toolbar.prg->NMENUCHECKER(76)
Called from toolbar.prg->NAFTERINKEY(51)
Called from principal.prg->(b)GERAMENU(572)
Called from ->INKEY(0)
Called from principal.prg->MAIN(163)

HwGUI 2.17 xHarbour build 1.0.0 Intl. (SimpLex)
Date:29/09/2010
Time:23:01:46


PROGRAMA PARA SIMULAR O ERRO:

Código: Selecionar todos

#include "c:\hwgui\include\windows.ch"
#include "c:\hwgui\include\guilib.ch"
#include "bonfim.ch"
 
#define TVS_HASBUTTONS          1   // 0x0001
#define TVS_HASLINES            2   // 0x0002
#define TVS_LINESATROOT         4   // 0x0004
#define TVS_EDITLABELS          8   // 0x0008
#define TVS_DISABLEDRAGDROP    16   // 0x0010
#define TVS_SHOWSELALWAYS      32   // 0x0020
#define TVS_RTLREADING         64   // 0x0040
#define TVS_NOTOOLTIPS        128   // 0x0080
#define TVS_CHECKBOXES        256   // 0x0100
#define TVS_TRACKSELECT       512   // 0x0200
#define TVS_SINGLEEXPAND     1024   // 0x0400
#define TVS_INFOTIP          2048   // 0x0800
#define TVS_FULLROWSELECT    4096   // 0x1000
#define TVS_NOSCROLL         8192   // 0x2000
#define TVS_NONEVENHEIGHT   16384   // 0x4000
#define TVS_NOHSCROLL       32768   // 0x8000  // TVS_NOSCROLL overrides this
 
procedure teste
private oTree
SetToolTipBalloon(.t.)
//INIT DIALOG oFrmHelpArray TITLE menu[linhaDoMenu,4]+t(" - Consulta a WBS") CLIPPER FONT retornaFonte("browse") AT 0,0 SIZE GETDESKTOPWIDTH(),GETDESKTOPHEIGHT() ICON retornaIcone() STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER;
INIT DIALOG oFrmHelpArray TITLE "teste" CLIPPER FONT HFont():Add( 'Arial',0,-12,400,850) AT 0,0 SIZE GETDESKTOPWIDTH(),GETDESKTOPHEIGHT() ICON retornaIcone() STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER;
ON INIT {||constroiWBS()}
 
@ 0,0 TREE oTree OF oFrmHelpArray SIZE GETDESKTOPWIDTH()-100,GETDESKTOPHEIGHT()-100 EDITABLE  DRAGDROP ;
ON SIZE {|o,x,y|o:Move(,,,y-20)}          ;
ON INIT {|| oTree:ItemHeight := 30 }      ;
ON DRAG {|| .t. } STYLE TVS_NONEVENHEIGHT + TVS_TRACKSELECT
ADD STATUS oStatusHelpArray TO oFrmHelpArray
oFrmHelpArray:Activate()
return(nil)
 
 
 
function constroiWBS
wbs:={}
aadd(wbs,{"1"        ,"01","Gerenciamento"})
aadd(wbs,{"1.1"      ,"01","Área Geral"})
aadd(wbs,{"1.1.1"    ,"02","Mão de Obra Indireta"})
aadd(wbs,{"1.1.1.1"  ,"11","Serviços de Terceiros"})
aadd(wbs,{"1.1.1.1.1","101","Consultores e Especialistas"})
aadd(wbs,{"1.1.1.2"  ,"12","Equipe Própria"})
aadd(wbs,{"1.1.1.2.1","131","Equipe de Coordenação"})
aadd(wbs,{"1.1.1.2.2","132","Equipe Administrativa"})
aadd(wbs,{"1.1.1.2.3","133","Equipe de Planejamento"})
aadd(wbs,{"1.1.1.2.4","134","Equipe de Custo"})
aadd(wbs,{"1.1.1.2.5","135","Equipe de Documentação"})
aadd(wbs,{"1.1.1.2.6","136","Equipe de Qualidade"})
aadd(wbs,{"1.1.1.2.7","137","Equipe de SMSRS"})
aadd(wbs,{"1.1.1.2.8","139","Equipe de Suprimento"})
 
aadd(wbs,{"2"        ,"02","Engenharia"})
aadd(wbs,{"2.1"      ,"01","Área Geral"})
aadd(wbs,{"2.1.1"    ,"02","Mão de Obra Indireta"})
aadd(wbs,{"2.1.1.1"  ,"11","Serviços de Terceiros"})
aadd(wbs,{"2.1.1.1.1","101","Consultores e Especialistas"})
aadd(wbs,{"2.1.1.2"  ,"12","Equipe Própria"})
aadd(wbs,{"2.1.1.2.1","133","Equipe de Planejamento"})
aadd(wbs,{"2.1.1.2.2","135","Equipe de Documentação"})
aadd(wbs,{"2.1.1.2.3","138","Equipe de Engenharia"})
 
for x=1 to len(wbs)
   if qualNivel(wbs[x,1])=1 // primeiro nivel
      tracelog(wbs[x,1])
      nivel1="n"+wbs[x,1]
      INSERT NODE &nivel1 CAPTION wbs[x,2]+' - '+wbs[x,3] TO oTree
      for y=x+1 to len(wbs)
         if wbs[x,1]=substr(wbs[y,1],1,1) // mudar depois
            do case
               case qualNivel(wbs[y,1])=2 // segundo nivel
                  nivel2="n"+wbs[y,1]
                  INSERT NODE &nivel2 CAPTION wbs[y,2]+' - '+wbs[y,3] TO &nivel1
               case qualNivel(wbs[y,1])=3 // terceiro nivel
                  nivel3="n"+wbs[y,1]
                  INSERT NODE &nivel3 CAPTION wbs[y,2]+' - '+wbs[y,3] TO &nivel2
               case qualNivel(wbs[y,1])=4 // quarto nivel
                  nivel4="n"+wbs[y,1]
                  INSERT NODE &nivel4 CAPTION wbs[y,2]+' - '+wbs[y,3] TO &nivel3
               case qualNivel(wbs[y,1])=5 // quinto nivel
                  nivel5="n"+wbs[y,1]
                  INSERT NODE &nivel5 CAPTION wbs[y,2]+' - '+wbs[y,3] TO &nivel4
            endcase
         else
            exit
         endif
      next
      x=y-1
   endif
next
return
 

function qualNivel(codigoItem)
local tamanho:=len(alltrim(codigoItem))
local nivelCodigoItem
// mudar logica depois dos testes
do case
case tamanho=1
   nivelCodigoItem:=1
case tamanho=3
   nivelCodigoItem:=2
case tamanho=5
   nivelCodigoItem:=3
case tamanho=7
   nivelCodigoItem:=4
case tamanho=9
   nivelCodigoItem:=5
endcase
return(nivelCodigoItem)
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Re: Erro no Drag and Drop da Htree

Mensagem por esbasso »

foi corrigido
amanha ou final de semana posto no CVS
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Re: Erro no Drag and Drop da Htree

Mensagem por Luciano Bonfim »

baixei da CVS hoje e não tinha ainda... vc já colocou ?
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Re: Erro no Drag and Drop da Htree

Mensagem por esbasso »

ja foi atualizado
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Re: Erro no Drag and Drop da Htree

Mensagem por Luciano Bonfim »

Obrigado, está funcionando perfeitamente....

em tempo...

como fazer para varrem esse objeto e pegar as novas informações de onde os NODES estão depois que eu movi eles, por exemplo um NODE que estava na posição 1.1.1.1 pode estar agora na posicao 2.1.2.1...

como pegar essa informação?

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Responder