Página 2 de 2

usar vetor no tsbrowse

Enviado: 04 Jan 2012 09:03
por Pablo César
ai gravei no INI como C_VEMELHA no lugar de COR_VERMELHA, troquei a linha para esta e deu Error BASE/1003 Variavel não existe: C_VERMELHA
Não sei se você notou, mas não creio que você tenha cometido erro de digitação no nome... aqui você colocou C_VEMELHA ao invés de C_VERMELHA. Desculpe se pareço inocente nas minhas questões. Mas é que as vezes com o cansanço cometemos erros bobos sem darmos conta.

Volte a deixar como estava na hora de pegar o INI como estava. Mas modifique no seu código desta maneira na linha onde você aplica o setcolor faça assim:

BROW020101:SetColor( { 1, 2, 5 }, { COR_PRETA, { || IF( &(SGC020101BLOCO[NUMCOR]), ;
                     Interpreta( SGC020101AFUNC[14,NUMCOR,13] ) , (COR_BRANCA) ) }, COR_AZULCLARO }, W )

...//... e depois crie a seguinte função:

Código: Selecionar todos

Function Interpreta(cCor)
Do Case
	Case cCor="COR_BRANCA"   
	     hRet:=RGB( 255,255,255 )
	Case cCor="COR_AMARELA"   
	     hRet:=RGB( 255,255,000 )
	Case cCor="COR_AZUL"        
	     hRet:=RGB( 000,000,255 )
	Case cCor="COR_AZULCLARO"   
	     hRet:=RGB( 121,188,255 )
	Case cCor="COR_VERDE"       
	     hRet:=RGB( 000,255,000 )
	Case cCor="COR_VERDEESCU"   
	     hRet:=RGB( 000,128,000 )
	Case cCor="COR_VERMELHA"    
	     hRet:=RGB( 255,000,000 )
	Case cCor="COR_ROSA"        
	     hRet:=RGB( 255,128,255 )
	Case cCor="COR_LARANJA"
	     hRet:=RGB( 255,128,000 )
	Case cCor="COR_LILAS"
	     hRet:=RGB( 128,000,128 )
	Case cCor="COR_PRETA"
	     hRet:=RGB( 000,000,000 )
	Case cCor="COR_CINZA"     
	     hRet:=RGB( 128,128,128 )
    Otherwise
	     hRet:=RGB( 102,051,000 )  // MARROM, faça outra cor só pra ver se atende condição
Endcase
Return hRet
Acredito que fazendo a função dentro do seu código possa interpretá-la e não como os outros casos em tempo de execução com macro... Agora se aparecer a cor marrom é porque a assignação do elemento SGC020101AFUNC[14,NUMCOR,13] está furada...

usar vetor no tsbrowse

Enviado: 04 Jan 2012 10:57
por Amparo
ola amigos,

Pablo, BATATA... ganhei mais alguns fins de cabelo....(RSRSRS)

fiz como me passou so mudei o Case cCor:="COR_VERMELHA" para Case cCor="COR_VERMELHA"
quando escrevi C_VEMELHA foi puro erro de digitação, eu ate tinha feito uma funcao usando IF e ELSEIF no lugar do CASE mas acho que de tanto bater pra la e pra ca fiz alguma besteira e nao deu certo.

agora coloquei meu codigo assim e que beleza os RETIDOS foram pintados de VERMELHO os outros de VERDE

Código: Selecionar todos

BROW020101:SetColor( { 1, 2, 5 }, { COR_PRETA, { || IF( &(SGC020101BLOCO[NUMCOR]), ;
      Interpreta( SGC020101AFUNC[14,NUMCOR,13] ) , Interpreta( SGC020101AFUNC[14,NUMCOR,14] ) ) }, COR_AZULCLARO }, W )
cara, muito obrigado mesmo, resolvendo este problema me abre um lek para eu montar a minha coluna calculada

valeu
abraços

usar vetor no tsbrowse

Enviado: 04 Jan 2012 11:25
por Pablo César
Quê bom colega que serviu o meu acompanhamento, mas eu também tenho a te agradecer, mesmo ter tomado algum tempo da minha atenção, posso dizer que também serviu para o meu aprendizado. Muitas vezes estamos tão preocupados com certo focus que requerem a nossa atenção que as vezes deixamos de lado alguns detalhes que fogem. Desde o começo eu percebí que além de tentar entender o seu código, o erro só poderia estar na interpretação do conteúdo daquela matriz. Só que custou em saber como se compunha e como era utilizada até que você foi explicando a sua lógica. Você está de parabéns, pois seu código é rico em detalhes, só espero que não abuse de tanta memória na criação de matrizes e o sistema acabar ficando lento ou até mesmo ter um colapso. Não sei avaliar esse consumo, mas talvez eu faria com que essas informações de condição sobre as cores possam ser aplicadas dentro do proprio dbf, já gravando a cor que merece sobre a condição que cada registro se encontra no momento da inclusão e alteração do registro. E a diferenciação de cores, iria ser "traduzida" em arquivos diferenciados para cada usuário que escolheu tal e tal cores. Não sei uma sugestão.
mudei o Case cCor:="COR_VERMELHA" para Case cCor="COR_VERMELHA"
kkkk isso mesmo ! Claro, um erro desses não poderia dar certo jamais. Bem notado ! (desculpa essa falha e já corrigí a minha mensagem anterior no código).

usar vetor no tsbrowse

Enviado: 04 Jan 2012 11:50
por Amparo
ola amigos,

Pablo, como disse no começo, meu programa é meu complicado mesmo, as vezes ate eu nao sei o que fiz (RSRSR) mais a minha ideia é criar um sistema de ERP funcionando tipo como um excel ou seja voce acrescenta coluna, oculta coluna, inclui uma linha que nada mais é que um novo registro, deleta a linha, congela um coluna e por ai vai, note que no printscreen que lhe passei tem um botao chamado LAYOUT (F6) aqui fica guardado todos os layout de cada tabela, aquelas que o usuario criou com o seu campo preferido e suas condiçoes, o Layout Natural (CTRL+F6) cria um browse com todos os campos do cadastro de clientes os outros tem apenas os campos que cada usuario determinou, repare tambem que no FORM do layout do sistema existe um botao chamado PADRAO, quando o usuario escolhe o layout e clica no botao PADRAO o sistema grava no cadastro de usuario qual é o LAYOUT padrao dele, assim quando ele entrar novamente no cadastro de cliente vai aparecer primeiro seu layout padrao.

isso esta funcional em clipper 5.3, agora estou tentando aos poucos (com o tempo que tenho) migrar para minigui, por isso acabo apanhando um pouco, ainda nao me familiarizei com a programação Orientada objeto, tanto é que meus prgs eu crio na unha form a form botao a botao, nao consegui utilizar nenhuma IDE ainda, quem sabe um dia.

a proposito quanto a minha idade ja passei dos 45 e nao é so fio de cabelo que estou perdendo, perdi tambem alguns neuronios (RSRSRS)

mais uma vez muito obrigado.

usar vetor no tsbrowse

Enviado: 04 Jan 2012 12:14
por Pablo César
Legal. Mas confirme se eu não estiver errado. A sua matriz SGC020101AFUNC tem tantos elementos (digamos quantidade em linha ou valor do NUMCOR) tantos quantos o número de registros do DBF ?

usar vetor no tsbrowse

Enviado: 04 Jan 2012 13:57
por Amparo
ola amigos

o dbf que guardo meus layouts chama T_ables, neste dbf tenho hoje 97 registros contando os registros deletados ( isso em um cliente de medio porte)
no T_ables tem um campo chamado TB_NAME que é o nome que o usuario da ao seu layout
eu crio o vetor no momento que o usuario escolhe seu layout pegando os dados da tabela T_ABLES mais os dados do arquivo INI, eu nao carrego todo o dbf e sim somente o registro referente ao layout a ser usado.

o vetor SGC020101AFUNC tem 20 elementos guardo outras informaçoes nele, so que SGC020101AFUNC[14,numcor,13] guardo a cor da primeira condicao e o SGC020101AFUNC[14,numcor,13] a cor da segunda condição, e tambem tenho o vetor SGC020101AFUNC[14,x,11] que guardo a a primeira condicao da minha coluna calculada e SGC020101AFUNC[14,x,12] a segunda condicao da coluna calculada.

abraços