Clipper On Line • Ver Tópico - Classe tTreeView tem Bug ???

Classe tTreeView tem Bug ???

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

Classe tTreeView tem Bug ???

Mensagempor ctoas » 01 Abr 2015 08:00

Bom dia amigos.

Estou querendo usar a classe tTreeView, no exemplo abaixo funciona os SETCHECK mediante execução após clique em um botão.

********************************************************************************
FUNCTION TESTE()
********************************************************************************

   LOCAL oTREE, oITEM:= array(50), oSUBITEM:= array(50)

   DEFINE DIALOG oDlg RESOURCE "CAD"

   oTree := TTreeView():Redefine( 4001, oDlg )

   REDEFINE BUTTONBMP oBtn ID 4002 OF oDlg ACTION ATUALIZATREE(oTREE,oITEM,oSUBITEM)

   ACTIVATE DIALOG oDlg CENTERED ON INIT MONTATREE(oTREE,oITEM,oSUBITEM)

RETURN NIL

********************************************************************************
FUNCTION MONTATREE(oTREE,oITEM,oSUBITEM)
********************************************************************************

   oITEM[01]:= oTREE:ADD( "ITEM1" )
      oSUBITEM[01]:=oITEM[01]:ADD( "ITEM1A" )
      oSUBITEM[02]:=oITEM[01]:ADD( "ITEM1B" )
      oSUBITEM[03]:=oITEM[01]:ADD( "ITEM1C" )
      oSUBITEM[04]:=oITEM[01]:ADD( "ITEM1D" )

   oITEM[02]:= oTREE:ADD( "ITEM2" )
      oSUBITEM[05]:=oITEM[02]:ADD( "ITEM2A" )
      oSUBITEM[06]:=oITEM[02]:ADD( "ITEM2B" )
      oSUBITEM[07]:=oITEM[02]:ADD( "ITEM2C" )
      oSUBITEM[08]:=oITEM[02]:ADD( "ITEM2D" )

   oTREE:EXPAND()

RETURN NIL

********************************************************************************
FUNCTION ATUALIZATREE(oTREE,oITEM,oSUBITEM)
********************************************************************************

   oITEM[01]:SETCHECK(.T.)
      oSUBITEM[01]:SETCHECK(.T.)
      oSUBITEM[02]:SETCHECK(.T.)
      oSUBITEM[03]:SETCHECK(.T.)
      oSUBITEM[04]:SETCHECK(.T.)

   oITEM[02]:SETCHECK(.T.)
      oSUBITEM[05]:SETCHECK(.T.)
      oSUBITEM[06]:SETCHECK(.T.)
      oSUBITEM[07]:SETCHECK(.T.)
      oSUBITEM[08]:SETCHECK(.T.)

   oTree:REFRESH()

RETURN NIL


Mas se eu retirar o botão e automatizar pelo ON INIT como no exemplo abaixo não acontece nada.

********************************************************************************
FUNCTION TESTE()
********************************************************************************

   LOCAL oTREE, oITEM:= array(50), oSUBITEM:= array(50)

   DEFINE DIALOG oDlg RESOURCE "CAD"

   oTree := TTreeView():Redefine( 4001, oDlg )

   ACTIVATE DIALOG oDlg CENTERED ON INIT(MONTATREE(oTREE,oITEM,oSUBITEM),ATUALIZATREE(oTREE,oITEM,oSUBITEM))

RETURN NIL


Alguém saberia o porque ?

Agradeço antecipadamente aos que puderem ajudar.
Avatar de usuário

ctoas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 52
Data de registro: 09 Mai 2005 16:22
Cidade/Estado: São Paulo
Curtiu: 5 vezes
Mens.Curtidas: 1 vez

Classe tTreeView tem Bug ???

Mensagempor rochinha » 06 Abr 2015 02:50

Amiguinhos,

O evento ON INIT quando executado, ainda não tem os objetos formados.

Após os objetos formados voce consegue execução de comandos. Use outro evento ON, tipo ON RESIZE, etc...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Classe tTreeView tem Bug ???

Mensagempor ctoas » 07 Abr 2015 09:49

Bom dia.

Rochinha, obrigado por ter respondido, você não me apresentou a solução, mas me deu a luz.

Resolvido com um pequeno POG.

********************************************************************************
FUNCTION TESTE()
********************************************************************************

   LOCAL oTREE, oITEM:= array(50), oSUBITEM:= array(50)

   DEFINE DIALOG oDlg RESOURCE "CAD"

   oTree := TTreeView():Redefine( 4001, oDlg )
   
   oDlg:bStart := {||ATUALIZATREE(oTREE,oITEM,oSUBITEM)}
   
   ACTIVATE DIALOG oDlg CENTERED ON INIT MONTATREE(oTREE,oITEM,oSUBITEM)

RETURN NIL

********************************************************************************
FUNCTION MONTATREE(oTREE,oITEM,oSUBITEM)
********************************************************************************

   oITEM[01]:= oTREE:ADD( "ITEM1" )
      oSUBITEM[01]:=oITEM[01]:ADD( "ITEM1A" )
      oSUBITEM[02]:=oITEM[01]:ADD( "ITEM1B" )
      oSUBITEM[03]:=oITEM[01]:ADD( "ITEM1C" )
      oSUBITEM[04]:=oITEM[01]:ADD( "ITEM1D" )

   oITEM[02]:= oTREE:ADD( "ITEM2" )
      oSUBITEM[05]:=oITEM[02]:ADD( "ITEM2A" )
      oSUBITEM[06]:=oITEM[02]:ADD( "ITEM2B" )
      oSUBITEM[07]:=oITEM[02]:ADD( "ITEM2C" )
      oSUBITEM[08]:=oITEM[02]:ADD( "ITEM2D" )

   oTREE:EXPAND()   

RETURN NIL

********************************************************************************
FUNCTION ATUALIZATREE(oTREE,oITEM,oSUBITEM)
********************************************************************************

   MSGWAIT(,,0.001) <--- POG

   oITEM[01]:SETCHECK(.T.)
      oSUBITEM[01]:SETCHECK(.T.)
      oSUBITEM[02]:SETCHECK(.F.)
      oSUBITEM[03]:SETCHECK(.T.)
      oSUBITEM[04]:SETCHECK(.F.)

   oITEM[02]:SETCHECK(.T.)
      oSUBITEM[05]:SETCHECK(.F.)
      oSUBITEM[06]:SETCHECK(.F.)
      oSUBITEM[07]:SETCHECK(.F.)
      oSUBITEM[08]:SETCHECK(.T.)

   oTree:REFRESH()

RETURN NIL
Avatar de usuário

ctoas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 52
Data de registro: 09 Mai 2005 16:22
Cidade/Estado: São Paulo
Curtiu: 5 vezes
Mens.Curtidas: 1 vez

Classe tTreeView tem Bug ???

Mensagempor Euclides » 07 Abr 2015 16:34

Cotas, não recisa POG, nem codeblock...
Faz somente :
ACTIVATE DIALOG ... ON INIt ...  ON PAINT ATUALIZATREE(oTREE,oITEM,oSUBITEM)

Isso poderá causar alguns problemas, se você atualizou o Tree de algum local extermo (DBF) e resolver move a tela. Aí a tela voltará ao estado original. Mas isso pode ser resolvodo com om "switch".
lswitch :=.T.
...
... ON PAINT iif(lswitch, (ATUALIZATREE(oTREE,oITEM,oSUBITEM), lSwitch:=.F.),)

Não sei se é mais eficiente, mas, pelo menos não é POG
T+
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Classe tTreeView tem Bug ???

Mensagempor ctoas » 08 Abr 2015 10:04

Valeu Euclides...
Avatar de usuário

ctoas
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 52
Data de registro: 09 Mai 2005 16:22
Cidade/Estado: São Paulo
Curtiu: 5 vezes
Mens.Curtidas: 1 vez




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 13 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro