Ja Tentei de tudo e com todos !
Moderador: Moderadores
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
Ja Tentei de tudo e com todos !
Bom Antes de mais nada Feliz dia dos Amigos, que foi ontem.
Um abraço a todos que fazem este Forum.
O Problema e o seguinte:
tenho um browse na tela, que pode ser dbedit, tbrowse, ou outro qualquer. o importante e que resulte na solucao.
Bom ai vai a questao:
o Browse e tipo assim:
--------------------------------------------------------------------------
Nome do Salao: : Dia 01 : Dia 02 : Dia 03 : Dia 04 : Dia 05 : ->>>>
--------------------------------------------------------------------------
salao recife : 105020: 0 : 0 : 105130 : 105130:
salao itamaraca : 0: 213541 : 0 : 0 : 0:
salao pe : 0: 0 : 0 : 0 : 0:
--------------------------------------------------------------------------
Pra voces entenderem melhor o meu cursor vai passeando
nos dias para a direita passando varias telas a direita, e para baixo
percorrendo os saloes.
Ex: o salao recife esta com uma reserva dia 01
dia 2 esta desocupado e volta a ficar ocupado dia 4 e 5
Gostaria que estes numeros de reservas fossem de outra cor
pois neles estao contidos os status dessa reserva, ex: se a reserva esta
garantida esta coluna dessa linha ficara verde, se o status desta
reserva estiver em pendencia, ela ficara azul, etc etc etc
as reservas com numero 0, ou seja nao contem reserva ficaria preto.
* Consegui com a ajuda de varios amigos deste forum, mudar a cor da linha, mas nao serve pois na mesma linha tem varios dados de varios status, entao a selecao das cores tinham de ser pela linha+coluna
tanto assim que abre o browse, como tambem na navegacao.
Aqui vai a estrutura do meu dbf:
-------------------
(salao) -caractere de 30
(dia01) -date
(status1) - caractere de 1
(dia02)
(status2)
(dia03)
(status3)
-------------------
e assim por diante ate o dia 30
para mudar a cor a funcao teria de se basear na variavel status
ex:
1=azul
2=vermelho
0=preto
----------------------------------------
ATENCAO AS CORES TEM DE MUDAR DE ACORDO COM A COLUNA E NAO DE ACORDO COM A LINHA. E NAO MUDAR TODA A COLUNA, NEM TODA A LINHA, APENAS O CAMPO PERTINENTE.
----------------------------------------
Se Alguem aceitar este desafio e conseguir me ajudar, ficarei muito grato, e como trabalho com hotelaria, o heroi sera muito bem vindo quando vier a Recife-PE
------------------------------------------
Alexandre Pessoa - 81-96152319 (Pode ligar a Cobrar)
solucoeshotel@hotmail.com
alexandre@managercorp.com.br
Um abraço a todos que fazem este Forum.
O Problema e o seguinte:
tenho um browse na tela, que pode ser dbedit, tbrowse, ou outro qualquer. o importante e que resulte na solucao.
Bom ai vai a questao:
o Browse e tipo assim:
--------------------------------------------------------------------------
Nome do Salao: : Dia 01 : Dia 02 : Dia 03 : Dia 04 : Dia 05 : ->>>>
--------------------------------------------------------------------------
salao recife : 105020: 0 : 0 : 105130 : 105130:
salao itamaraca : 0: 213541 : 0 : 0 : 0:
salao pe : 0: 0 : 0 : 0 : 0:
--------------------------------------------------------------------------
Pra voces entenderem melhor o meu cursor vai passeando
nos dias para a direita passando varias telas a direita, e para baixo
percorrendo os saloes.
Ex: o salao recife esta com uma reserva dia 01
dia 2 esta desocupado e volta a ficar ocupado dia 4 e 5
Gostaria que estes numeros de reservas fossem de outra cor
pois neles estao contidos os status dessa reserva, ex: se a reserva esta
garantida esta coluna dessa linha ficara verde, se o status desta
reserva estiver em pendencia, ela ficara azul, etc etc etc
as reservas com numero 0, ou seja nao contem reserva ficaria preto.
* Consegui com a ajuda de varios amigos deste forum, mudar a cor da linha, mas nao serve pois na mesma linha tem varios dados de varios status, entao a selecao das cores tinham de ser pela linha+coluna
tanto assim que abre o browse, como tambem na navegacao.
Aqui vai a estrutura do meu dbf:
-------------------
(salao) -caractere de 30
(dia01) -date
(status1) - caractere de 1
(dia02)
(status2)
(dia03)
(status3)
-------------------
e assim por diante ate o dia 30
para mudar a cor a funcao teria de se basear na variavel status
ex:
1=azul
2=vermelho
0=preto
----------------------------------------
ATENCAO AS CORES TEM DE MUDAR DE ACORDO COM A COLUNA E NAO DE ACORDO COM A LINHA. E NAO MUDAR TODA A COLUNA, NEM TODA A LINHA, APENAS O CAMPO PERTINENTE.
----------------------------------------
Se Alguem aceitar este desafio e conseguir me ajudar, ficarei muito grato, e como trabalho com hotelaria, o heroi sera muito bem vindo quando vier a Recife-PE
------------------------------------------
Alexandre Pessoa - 81-96152319 (Pode ligar a Cobrar)
solucoeshotel@hotmail.com
alexandre@managercorp.com.br
este exemplo e para controle de preço
se a mercadoria e velha no estoque se tem mais de 30 dias fica amarela
60 dias azul mais de 90 dias vermelho o preço de vendas
se a mercadoria e velha no estoque se tem mais de 30 dias fica amarela
60 dias azul mais de 90 dias vermelho o preço de vendas
Código: Selecionar todos
***************************
Function NvDBEdit1(arg,arg1,arg2,arg3,arg4,arg5)
Local Save1
#include "inkey.ch"
#include "dbedit.ch"
#include "setcurs.ch"
#define COLSEP CHR(32) + CHR(179) + CHR(32)
#define HEADSEP CHR(196) + CHR(194) + CHR(196)
#define FOOTSEP CHR(196) + CHR(194) + CHR(196)
* #define MYCOLORS "B+/N,W+/G+,W+*/G,N,B+/N,N/BG,W+*/N,GR+/BG"
#define MYCOLORS "N/BG,W+/B,GR+*/B,B/BG,N/BG,W+/B,GR+*/BG,GR+/BG,R+/B"
LOCAL b, column, nKey, cScreen
LOCAL nRecno, nCnt, nTemp
LOCAL nCursor, cSearch
LOCAL GetList := {}
cScreen := SaveScreen()
SET CONFIRM ON
SETCURSOR(SC_NONE)
SetColor("N/BG")
@ 2, 0 Clear To 7, 79
@ 3, 0 TO 23,79 COLOR "N/BG"
barra_e("Novo Altera Busca eXclui Entrada Saida exTrato Opcoes etIqueta Muda ESC-retorna","N")
b := TBrowseDB( arg+1, arg1+1, arg2-1, arg3-1)
b:colorSpec := MYCOLORS
b:colSep := COLSEP
b:headSep := HEADSEP
column := TBColumnNew( arg4[1], {|| ref} )
b:addColumn( column )
column := TBColumnNew( arg4[2], {|| SubStr(descricao,1,42)} )
b:addColumn( column )
column := TBColumnNew( arg4[3], {|| TransForm(venda, "@e 99999.99")} )
b:addColumn( column )
column:colorBlock := {|| IF(Date()-dt_atual <= 30, { 5, 2 }, IF(Date()-dt_atual > 30 .And. Date()-dt_atual <= 90, { 7, 3 }, IF(Date()-dt_atual > 90, { 4, 9},{5,2})))} // aki ele verifica a data de entrada da mercadoria
If libera_senha[1,4] == 88
column := TBColumnNew( arg4[4], {|| TransForm(custo, "@e 99999.99")} )
b:addColumn( column )
column := TBColumnNew( arg4[5], {|| TransForm(margem, "@e 999.99 %")} )
b:addColumn( column )
column := TBColumnNew( arg4[6], {|| dt_atual} )
b:addColumn( column )
EndIf b:refreshAll()
ForceStable( b )
if w3tecla == 27 .And. op1 != 1
SetCursor(1)
Set Confirm Off
If op1 != 1
vbusca:= "F"
EndIf
Exit
endif
if w3tecla == 27 .And. op1 == 1 // se chamado pelo orcamento, entao retorna
SetCursor(1)
Set Confirm Off
Exit
endif
EndIf
End
RestScreen(,,,,cScreen)
RETURN (.t.)
********************************
STATIC FUNCTION TBMoveCursor( o, nKey )
LOCAL nFound
STATIC aKeys := ;
{ K_DOWN , {|obj| obj:down()},;
K_UP , {|obj| obj:up()},;
K_PGDN , {|obj| obj:pageDown()},;
K_PGUP , {|obj| obj:pageUp()},;
K_CTRL_PGUP , {|obj| obj:goTop()},;
K_CTRL_PGDN , {|obj| obj:goBottom()},;
K_RIGHT , {|obj| obj:right()},;
K_LEFT , {|obj| obj:left()},;
K_HOME , {|obj| obj:home()},;
K_END , {|obj| obj:end()},;
K_CTRL_LEFT , {|obj| obj:panLeft()},;
K_CTRL_RIGHT, {|obj| obj:panRight()},;
K_CTRL_HOME , {|obj| obj:panHome()},;
K_CTRL_END , {|obj| obj:panEnd()} }
nFound := ASCAN( aKeys, nKey )
IF (nFound != 0)
EVAL( aKeys[++nFound], o )
ENDIF
RETURN (nFound != 0)
***************************
Function ForceStable( oObj )
While !oObj:stabilize()
End
Return (.T.)Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
NAO DEU CERTO
Seu prg de exemplo, esta cheio de bugs ex: if faltando endif, enddo sem do while.
Voce pode mandar o prg certinhoi pro meu email e um exe de demo por favor, estou precisando mesmo.
Voce pode mandar o prg certinhoi pro meu email e um exe de demo por favor, estou precisando mesmo.
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
Valeu Cara, Mas nao era isto.
Do jeito que voce me mandou eu agradeco muito pela boa vontade, mas desse jeito eu ja tinha conseguido, ou seja voce muda a linha conforme algum parametro, mas nao e isto que to precisando.
O que eu preciso e que mude apenas a coluna, pois na mesma linha
tem situacoes diferentes, mudando toda a linha nao adianta.
tem de ser pela coluna, o que deve mudar e a cor da coluna e nao da linha.
Se voce puder continuar me ajudando eu agradeço.
O que eu preciso e que mude apenas a coluna, pois na mesma linha
tem situacoes diferentes, mudando toda a linha nao adianta.
tem de ser pela coluna, o que deve mudar e a cor da coluna e nao da linha.
Se voce puder continuar me ajudando eu agradeço.
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Se você utilizar um tbrowse, basta criar um codeblock para alterar a cor dos dados conforme o seu conteúdo.
É importante que você defina os pares de cores a serem utilizados no método tbrowse:colorspec .
OTBC:COLORBLOCK:={|X|IF(Field(2) == "ok",{1,2},{3,4})}
Se o campo 2 contiver "ok", os pares de cores 1 e 2 serão utilizados e, caso contrário, os partes 3 e 4.
Espero ter ajudado.
MGS
É importante que você defina os pares de cores a serem utilizados no método tbrowse:colorspec .
OTBC:COLORBLOCK:={|X|IF(Field(2) == "ok",{1,2},{3,4})}
Se o campo 2 contiver "ok", os pares de cores 1 e 2 serão utilizados e, caso contrário, os partes 3 e 4.
Espero ter ajudado.
MGS
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
Retorno para MarceloG
Cara, Gostei da rapidez no atendimento, nem tinha terminado a pergunta ja estava recebendo a resposta, Parabens.
So que preciso que voce me mande um prg e um demo para mim poder entender melho, tem condição de voce fazer isto por mim ?
eu agradeço.
So que preciso que voce me mande um prg e um demo para mim poder entender melho, tem condição de voce fazer isto por mim ?
eu agradeço.
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Caro amigo,
embora baseada na mesma, esta não é a função que eu uso, mas dá para entender o princípio.
A propósito, e foi uma dica muito importante quando eu comecei, você deve iniciar com coisas pequenas e ir aumentando, aumentando, etc.
Espero ter ajudado.
MGS
PS: colorblock define a cor do dado, sendo que o primeiro par de cores refere-se ao item ativo e o segundo, ao inativo.
embora baseada na mesma, esta não é a função que eu uso, mas dá para entender o princípio.
A propósito, e foi uma dica muito importante quando eu comecei, você deve iniciar com coisas pequenas e ir aumentando, aumentando, etc.
Código: Selecionar todos
FUNCTION TBR()
LOCAL OTBR,OTBC
USE ARQTESTE (o arquivo teste tem três campos)
OTBR:=TBROWSEDB(0,0,24,79)
OTBR:COLORSPEC:= "W+/B,N/W,R+/B,R/W," (Cores do tbrowse)
___________________1 2 3 4
___________________1º PAR 2º PAR
OTBR:HEADSEP := "ÍÍÍ" (Divisor do cabeçalho)
(Coluna 1)
OTBC:=TBCOLUMNNEW(CAMPO1,FIELDWBLOCK(FIELD(1),SELECT()))
OTBR:ADDCOLUMN(OTBC)
(Coluna 2)
OTBC:=TBCOLUMNNEW(CAMPO2,FIELDWBLOCK(FIELD(2),SELECT()))
OTBR:ADDCOLUMN(OTBC)
(Coluna 3)
OTBC:=TBCOLUMNNEW(CAMPO3,FIELDWBLOCK(FIELD(3),SELECT()))
(Define a cor do dado conforme situação)
OTBC:COLORBLOCK:={|X|IF(CAMPO1 == "X",{1,2},{3,4})}
(Você poderia usar qualquer combinação, desde que a mesma esteja definida em :COLORSPEC - Atenção, tem limite!!)
OTBR:ADDCOLUMN(OTBC)
DO WHILE ....
(Estabilizar/exibir tbrowse e testar teclas)
ENDDO
RETURNMGS
PS: colorblock define a cor do dado, sendo que o primeiro par de cores refere-se ao item ativo e o segundo, ao inativo.
Editado pela última vez por Pablo César em 10 Abr 2012 09:15, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1