Clipper On Line • Ver Tópico - portar pra indice cdx

portar pra indice cdx

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

portar pra indice cdx

Mensagempor Nascimento » 14 Jan 2018 19:50

Amigos vi uma função muito legal na aba de dowloads , justamente o que precisava
mais houve um pequeno detalhe , usa indice ntx no codigo quando portei pra o uso do cdx não funcionou mais como deveria
teria algum amigo que poderia analizar o codigo e saber o porque, eu ate ja tentei mais não consegui ate agora

http://www.pctoledo.com.br/forum/filebase.php?d=1&id=62&ctg=1&searchword=&what=s&page=3

aqui esta o link e abaixo o codigo

# Include "Inkey.ch"
Init Function  Main()
Cls
SetColor("GR+/B")
@ 03,02 Clear To 10,65
@ 03,02 To 10,65
//-----------      1         2         3         4         5         6         7
//-----------4567890123456789012345678901234567890123456789012345678901234567890123456
@ 03,03 Say "| Cadastro de Produtos |"
@ 05,04 Say "     Codigo: _____                                   "
@ 06,04 Say "  Descricao: ________________________________________"
@ 07,04 Say "Preco Unit.: _.___,__                                "
@ 08,04 Say " Quantidade: ___.___,___                             "
@ 10,05 Say "[ESC]-Sair  [F3]-Consulta"
TelaPrincipal:=SaveScreen(0,0,24,79)

SetKey(K_F3,{||Pega(ReadVar())})

Do While .T.
   RestScreen(0,0,24,79,TelaPrincipal)
   SetCursor(1)
   SetColor("W+/U,W+/BG,,Gr+/B,W+/U")
   M->Pro_Codigo:=Space(05)
   @ 05,17 Get M->Pro_Codigo Pict "99999"
   Read

   If LastKey() = K_ESC
      Exit
   EndIf

   M->Pro_Codigo:=StrZero(Val(M->Pro_Codigo),5)

   Use Produto Index Codigo,Descri Alias Pro New
   If DbSeek(M->Pro_Codigo)
      M->Pro_Descri:=Pro->Pro_Descri
      M->Pro_PreUni:=Pro->Pro_PreUni
      M->Pro_Quanti:=Pro->Pro_Quanti
      DbCloseArea()
      SetColor("W+/B")
      @ 06,17 Say M->Pro_Descri
      @ 07,17 Say M->Pro_PreUni Pict "@E 9,999.99"
      @ 08,17 Say M->Pro_Quanti Pict "@E 999,999.999"
      @ 11,02 Say "Tecle Enter para Continuar..."
      SetCursor(0)
      Inkey(0)
      SetCursor(1)
   Else
      DbCloseArea()
      Alert("Produto NÆo Cadastrado!")
   EndIf

EndDo
SetColor("")
Cls
Return

Static Function Pega(Var)
Local Regra:="Pro_Quanti = 0"
SetKey(K_F3,.F.)
If LastKey() = K_F3
   If Upper(Var) = "M->PRO_CODIGO"
      M->Pro_Codigo:=Consulta(04,14,18,66,"Produto","Descri.Ntx,Codigo.Ntx",;
                          {"Pro_Codigo","Pro_Descri","Pro_Quanti"},{"C¢digo","Descri‡Æo","Quantidade"},;
                          {"99999","@!","@E 999,999.999"},Regra)
   EndIf

EndIf
SetKey(K_F3,{||Pega(ReadVar())})
Return

Function Consulta(Li,Ci,Lf,Cf,Arquivo,Indices,Campo,Cabecalho,Pict,Regra)

/* Parametros
Li, Ci    - Coordenadas do canto superior esquerdo da janela de visualiza‡Æo
Lf, Cf    - Coordenadas do canto inferior direito da janela de visaliza‡Æo
Arquivo   - Arquivo a ser visualizadp
Indices   - Indices do arquivo
Campo     - Matriz que contem os campos do arquivo a serem  visualizados
Cabecalho - Matriz que contem o cabecalho das colunas a serem visualizados
Pict      - Matriz com as pictures dos campos. Este paramentro ‚ opcional
Regra     - String com a valida‡Æo dos campos. Este parametro ‚ opcional
*/

Local Tela:=SaveScreen(0,0,24,79),Area:=Select(), CorSalva:=SetColor()
Local oMyBrowser, Coluna, nKey, NroDig:=0, Nome:="", Col:=Ci+14

Use (Arquivo) Index (Indices) New  // Troque esta linha pela fun‡Æo que vc utiliza
DbGotop()                          // para abrir seus arquivos em rede

SetColor("U/W")
@ Li,Ci Clear To Lf,Cf
@ Li,Ci To Lf,Cf
@ Li+2,Ci Clear To Lf,Cf
@ Li+2,Ci To Lf,Cf
@ Li+2,Ci Say Chr(195)
@ Li+2,Cf Say Chr(180)
@ Li+4,Ci Say Chr(195)
@ Li+4,Cf Say Chr(180)
@ Li+1,Ci+3 Say "Pesquisar: _________________________"
SetCursor(0)

X:=Campo[2]
oMybrowser:=TBrowseDb(Li+3,Ci+1,Lf-1,Cf-1)
oMybrowser:HeadSep  :=Chr(196) + Chr(196) + CHr(196)
oMybrowser:ColSep   :=Space(01) + Chr(179) + Space(01)
oMybrowser:ColorSpec:="U/W,W+/BG,R/W,R/BG"

For I:=1 To Len(Campo)

    Coluna:=TbColumnNew(Cabecalho[I],FieldwBlock(Campo[I],Select()))
    Coluna:Picture:=Pict[I]
    If Regra # Nil
       Coluna:ColorBlock:={|X| If(&(Regra),{3,4},{1,2})}
    EndIf
    oMybrowser:AddColumn(Coluna)

Next

Do While .T.

   Do While ( ! oMyBrowser:Stabilize() )

      nKey:=InKey()

      If nKey != 0
         Exit
      EndIf

   EndDo

   If oMyBrowser:Stable

      If oMyBrowser:HitTop
         @ Lf,Cf-12 Say "| Inicio |"
      ElseIf oMyBrowser:HitBottom()
         @ Lf,Cf-12 Say "|  Fim   |"
      Else
         @ Lf,Cf-12 Say "ÄÄÄÄÄÄÄÄÄÄ"
      EndIf

      nKey:=Inkey(0)
   EndIf

   If nKey == K_ESC
      DbCloseArea()
      Exit
   ElseIf nKey == K_UP
      oMyBrowser:Up()
   ElseIf nKey == K_DOWN
      oMyBrowser:Down()
   ElseIf nKey == K_LEFT
      oMyBrowser:Left()
   ElseIf nKey == K_RIGHT
      oMyBrowser:Right()
   ElseIf nKey == K_HOME
      oMyBrowser:Home()
   ElseIf nKey == K_END
      oMyBrowser:End()
   ElseIf nKey == K_PGUP
      oMyBrowser:PageUp()
   ElseIf nKey == K_PGDN
      oMyBrowser:PageDown()
   ElseIf nKey == K_CTRL_PGUP
      oMyBrowser:GoTop()
   ElseIf nKey == K_CTRL_PGDN
      oMyBrowser:GoBottom()
   ElseIf nKey == K_CTRL_HOME
      oMyBrowser:PanHome()
   ElseIf nKey == K_CTRL_END
      oMyBrowser:PanEnd()
   ElseIf nKey == K_CTRL_LEFT
      oMyBrowser:PanLeft()
   ElseIf nKey == K_CTRL_RIGHT
      oMyBrowser:PanRight()
   ElseIf nKey == K_ENTER
      Var:=&(Campo[1])
      DbCloseArea()
      Sele(Area)
      RestScreen(0,0,24,79,Tela)
      SetColor(CorSalva)
      SetCurSor(1)
      Return(Var)
   Else
      wDigito:=LastKey()
      If wDigito  = 8
         If NroDig = 0
            Loop
         EndIf
         Col--
         NroDig--
         @ 05,Col Say "_"
         Nome:=Subs(Nome,1,Len(Nome)-1)
         If Empty(Nome)
           oMyBrowser:GoTop()
           Loop
         EndIf
         DbSeek(Upper(Nome),.T.)
         oMyBrowser:RefreshAll()
         Loop
      EndIf
      If NroDig = 25
         Col:=Ci+38
         NroDig--
         Nome:=Subs(Nome,1,Len(Nome)-1)
      EndIf
      Nome:= Nome+Chr(wDigito)
      @ 05,Col Say Upper(Chr(wDigito))
      Col++
      NroDig++
      DbSeek(Upper(Nome),.T.)
      oMyBrowser:RefreshAll()
   EndIf

EndDo
DbCloseArea()
Sele(Area)
RestScreen(0,0,24,79,Tela)
SetColor(CorSalva)
SetCurSor(1)
Return


estou compilando com harbour 3.2
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

portar pra indice cdx

Mensagempor Kapiaba » 15 Jan 2018 08:50

# Include "Inkey.ch"

ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT

//Init Function  Main()

FUNCTION Main()

   SET DATE BRITISH
   SET EPOCH TO 1950
   SET CENTURY ON
   SET SOFTSEEK OFF
   SET WRAP ON
   SETCANCEL( .F. )
   SET CONFIRM OFF
   SET DELETED ON
   SET ESCAPE OFF
   SET EXACT ON
   SET EXCLUSIVE OFF
   SET MULTIPLE OFF

   RDDSETDEFAULT("DBFCDX")

   HB_LANGSELECT( 'PT' )     // Default language is now Portuguese
   HB_SETCODEPAGE( "PT850" )

Cls
SetColor("GR+/B")
@ 03,02 Clear To 10,65
@ 03,02 To 10,65
//-----------      1         2         3         4         5         6         7
//-----------4567890123456789012345678901234567890123456789012345678901234567890123456
@ 03,03 Say "| Cadastro de Produtos |"
@ 05,04 Say "     Codigo: _____                                   "
@ 06,04 Say "  Descricao: ________________________________________"
@ 07,04 Say "Preco Unit.: _.___,__                                "
@ 08,04 Say " Quantidade: ___.___,___                             "
@ 10,05 Say "[ESC]-Sair  [F3]-Consulta"
TelaPrincipal:=SaveScreen(0,0,24,79)

SetKey(K_F3,{||Pega(ReadVar())})

Do While .T.
   RestScreen(0,0,24,79,TelaPrincipal)
   SetCursor(1)
   SetColor("W+/U,W+/BG,,Gr+/B,W+/U")
   M->Pro_Codigo:=Space(05)
   @ 05,17 Get M->Pro_Codigo Pict "99999"
   Read

   If LastKey() = K_ESC
      Exit
   EndIf

   M->Pro_Codigo:=StrZero(Val(M->Pro_Codigo),5)

   Use Produto Index Codigo,Descri Alias Pro New
   If DbSeek(M->Pro_Codigo)
      M->Pro_Descri:=Pro->Pro_Descri
      M->Pro_PreUni:=Pro->Pro_PreUni
      M->Pro_Quanti:=Pro->Pro_Quanti
      DbCloseArea()
      SetColor("W+/B")
      @ 06,17 Say M->Pro_Descri
      @ 07,17 Say M->Pro_PreUni Pict "@E 9,999.99"
      @ 08,17 Say M->Pro_Quanti Pict "@E 999,999.999"
      @ 11,02 Say "Tecle Enter para Continuar..."
      SetCursor(0)
      Inkey(0)
      SetCursor(1)
   Else
      DbCloseArea()
      Alert("Produto NÆo Cadastrado!")
   EndIf

EndDo
SetColor("")
Cls
Return

Static Function Pega(Var)
Local Regra:="Pro_Quanti = 0"
SetKey(K_F3,.F.)
If LastKey() = K_F3
   If Upper(Var) = "M->PRO_CODIGO"
      M->Pro_Codigo:=Consulta(04,14,18,66,"Produto","Descri.Ntx,Codigo.Ntx",;
                          {"Pro_Codigo","Pro_Descri","Pro_Quanti"},{"C¢digo","Descri‡Æo","Quantidade"},;
                          {"99999","@!","@E 999,999.999"},Regra)
   EndIf

EndIf
SetKey(K_F3,{||Pega(ReadVar())})
Return

Function Consulta(Li,Ci,Lf,Cf,Arquivo,Indices,Campo,Cabecalho,Pict,Regra)

/* Parametros
Li, Ci    - Coordenadas do canto superior esquerdo da janela de visualiza‡Æo
Lf, Cf    - Coordenadas do canto inferior direito da janela de visaliza‡Æo
Arquivo   - Arquivo a ser visualizadp
Indices   - Indices do arquivo
Campo     - Matriz que contem os campos do arquivo a serem  visualizados
Cabecalho - Matriz que contem o cabecalho das colunas a serem visualizados
Pict      - Matriz com as pictures dos campos. Este paramentro ‚ opcional
Regra     - String com a valida‡Æo dos campos. Este parametro ‚ opcional
*/

Local Tela:=SaveScreen(0,0,24,79),Area:=Select(), CorSalva:=SetColor()
Local oMyBrowser, Coluna, nKey, NroDig:=0, Nome:="", Col:=Ci+14

Use (Arquivo) Index (Indices) New  // Troque esta linha pela fun‡Æo que vc utiliza
DbGotop()                          // para abrir seus arquivos em rede

SetColor("U/W")
@ Li,Ci Clear To Lf,Cf
@ Li,Ci To Lf,Cf
@ Li+2,Ci Clear To Lf,Cf
@ Li+2,Ci To Lf,Cf
@ Li+2,Ci Say Chr(195)
@ Li+2,Cf Say Chr(180)
@ Li+4,Ci Say Chr(195)
@ Li+4,Cf Say Chr(180)
@ Li+1,Ci+3 Say "Pesquisar: _________________________"
SetCursor(0)

X:=Campo[2]
oMybrowser:=TBrowseDb(Li+3,Ci+1,Lf-1,Cf-1)
oMybrowser:HeadSep  :=Chr(196) + Chr(196) + CHr(196)
oMybrowser:ColSep   :=Space(01) + Chr(179) + Space(01)
oMybrowser:ColorSpec:="U/W,W+/BG,R/W,R/BG"

For I:=1 To Len(Campo)

    Coluna:=TbColumnNew(Cabecalho[I],FieldwBlock(Campo[I],Select()))
    Coluna:Picture:=Pict[I]
    If Regra # Nil
       Coluna:ColorBlock:={|X| If(&(Regra),{3,4},{1,2})}
    EndIf
    oMybrowser:AddColumn(Coluna)

Next

Do While .T.

   Do While ( ! oMyBrowser:Stabilize() )

      nKey:=InKey()

      If nKey != 0
         Exit
      EndIf

   EndDo

   If oMyBrowser:Stable

      If oMyBrowser:HitTop
         @ Lf,Cf-12 Say "| Inicio |"
      ElseIf oMyBrowser:HitBottom()
         @ Lf,Cf-12 Say "|  Fim   |"
      Else
         @ Lf,Cf-12 Say "ÄÄÄÄÄÄÄÄÄÄ"
      EndIf

      nKey:=Inkey(0)
   EndIf

   If nKey == K_ESC
      DbCloseArea()
      Exit
   ElseIf nKey == K_UP
      oMyBrowser:Up()
   ElseIf nKey == K_DOWN
      oMyBrowser:Down()
   ElseIf nKey == K_LEFT
      oMyBrowser:Left()
   ElseIf nKey == K_RIGHT
      oMyBrowser:Right()
   ElseIf nKey == K_HOME
      oMyBrowser:Home()
   ElseIf nKey == K_END
      oMyBrowser:End()
   ElseIf nKey == K_PGUP
      oMyBrowser:PageUp()
   ElseIf nKey == K_PGDN
      oMyBrowser:PageDown()
   ElseIf nKey == K_CTRL_PGUP
      oMyBrowser:GoTop()
   ElseIf nKey == K_CTRL_PGDN
      oMyBrowser:GoBottom()
   ElseIf nKey == K_CTRL_HOME
      oMyBrowser:PanHome()
   ElseIf nKey == K_CTRL_END
      oMyBrowser:PanEnd()
   ElseIf nKey == K_CTRL_LEFT
      oMyBrowser:PanLeft()
   ElseIf nKey == K_CTRL_RIGHT
      oMyBrowser:PanRight()
   ElseIf nKey == K_ENTER
      Var:=&(Campo[1])
      DbCloseArea()
      Sele(Area)
      RestScreen(0,0,24,79,Tela)
      SetColor(CorSalva)
      SetCurSor(1)
      Return(Var)
   Else
      wDigito:=LastKey()
      If wDigito  = 8
         If NroDig = 0
            Loop
         EndIf
         Col--
         NroDig--
         @ 05,Col Say "_"
         Nome:=Subs(Nome,1,Len(Nome)-1)
         If Empty(Nome)
           oMyBrowser:GoTop()
           Loop
         EndIf
         DbSeek(Upper(Nome),.T.)
         oMyBrowser:RefreshAll()
         Loop
      EndIf
      If NroDig = 25
         Col:=Ci+38
         NroDig--
         Nome:=Subs(Nome,1,Len(Nome)-1)
      EndIf
      Nome:= Nome+Chr(wDigito)
      @ 05,Col Say Upper(Chr(wDigito))
      Col++
      NroDig++
      DbSeek(Upper(Nome),.T.)
      oMyBrowser:RefreshAll()
   EndIf

EndDo
DbCloseArea()
Sele(Area)
RestScreen(0,0,24,79,Tela)
SetColor(CorSalva)
SetCurSor(1)
Return
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

portar pra indice cdx

Mensagempor JoséQuintas » 15 Jan 2018 09:49

mais houve um pequeno detalhe , usa indice ntx no codigo quando portei pra o uso do cdx não funcionou mais como deveria


Faça novamente.

Diferença básica:
- na hora de indexar, colocando tag
- Parece até idiota dizer isto mas parece necessário: índice CDX termina com .CDX, e índice NTX termina com .NTX
- Se não usar arquivo único CDX vale mesmo fonte pra NTX ou CDX, exceto na indexação
- Convém apagar índices anteriores NTX pra ter certeza de que estão sendo usados os índices corretos
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

portar pra indice cdx

Mensagempor JoséQuintas » 15 Jan 2018 09:58

Faltou acrescentar, porque não sei se já está usando CDX pra valer:

Uma das vantagens do CDX é poder usar arquivo de índice único.
Usar em arquivos separados igual NTX pode ser interessante somente na fase de transferência de um pra outro, ou se estourar o limite de índices dentro de um CDX.
O melhor pra resultado final vai ser arquivo de índice único mesmo, porque conta como 1 arquivo aberto, não importa quantos índices tenham no CDX.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

portar pra indice cdx

Mensagempor Kapiaba » 15 Jan 2018 10:19

Mister Quintas Escreveu:

ou se estourar o limite de índices dentro de um CDX.


Mister Quintas cada .CDX suporta até 50 TAGS, acho impossível alguém ter mais que 50 tags em um único CDX.

Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

portar pra indice cdx

Mensagempor Nascimento » 15 Jan 2018 10:30

Quintas escreveu:
Faça novamente.

Diferença básica:
- na hora de indexar, colocando tag
- Parece até idiota dizer isto mas parece necessário: índice CDX termina com .CDX, e índice NTX termina com .NTX
- Se não usar arquivo único CDX vale mesmo fonte pra NTX ou CDX, exceto na indexação
- Convém apagar índices anteriores NTX pra ter certeza de que estão sendo usados os índices corretos



sim amigo eu usei tags 2 tags nesse caso ai , e precisaria para anexar ao meu aplicativo principal que fosse via tag mesmo
e não igual a ntx entende
tipo: arquivo1.ntx arquivo2.ntx
preciso que seja um unico arquivo contando 2 tags
e sim fiz isso apaguei os indices , preferi postar o fonte original e expor o meu problema

em vez de "Descri.Ntx,Codigo.Ntx" criei o "produto.cdx" e abri na ordem 1 " set order to 1 " com as 2 tags entende

no dbedit() vai certinho mais eu queria usar o estilo de cores que o tbrowser me possibilita
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

portar pra indice cdx

Mensagempor JoséQuintas » 15 Jan 2018 13:11

no dbedit() vai certinho mais eu queria usar o estilo de cores que o tbrowser me possibilita


Então vamos começar de novo.... qual é o problema? índice ou cores?
Deu a entender que era problema com CDX.....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

portar pra indice cdx

Mensagempor Nascimento » 15 Jan 2018 14:17

vamos lá no dbedit() usando o .cdx eu consigo fazer certo
so que queria usar o tbrowser pois posso usar cores nas colunas que desejar
como esta no exemplo mais compilando o exemplo mudando o indice pra .cdx a funçao não funciona!
rsrs
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

portar pra indice cdx

Mensagempor JoséQuintas » 15 Jan 2018 15:03

Tanto faz o índice, na prática nem precisa ter índice.

Dois exemplos aqui.... completos até demais..... rs
São os que uso no meu aplicativo inteiro.

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/ze_fazbrowse.prg

ou separando a parte da cor:

   DO WHILE lmore
      DO WHILE ! oBrowse:Stabilize()
      ENDDO
      oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 3, 3 } ) // linha está com o cursor
      oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:ColPos, oBrowse:RowPos, oBrowse:ColPos }, { 2, 2 } ) // linha/coluna está com o cursor
      nkey := Inkey(0)
      DO CASE
      CASE nKey == K_RBUTTONDOWN
      CASE nKey == K_LBUTTONDOWN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

portar pra indice cdx

Mensagempor Nascimento » 15 Jan 2018 22:20

bom vou compilar seu exemplo
muito obrigado amigo
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

portar pra indice cdx

Mensagempor Nascimento » 17 Jan 2018 22:54

amigo por minha limitação , não entendi seu exemplo não

este que postei ate entendi so não sei porque ele não funciona quando uso .cdx
se fosse possivel mudar ele pra que ele usasse cdx seria o ideal pra meu uso
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

portar pra indice cdx

Mensagempor JoséQuintas » 18 Jan 2018 00:25

São esses dois comandos pra mudar cor.
Um é para a linha completa, e outro só pra coluna.
Isso permite ter a linha de outra cor, e a coluna de outra: destaca a linha e a coluna aonde está posicionado.

Tem 2 tbrowse no fonte.
Um deles é mais simples.

Só uso CDX, mas o tbrowse funciona pra qualquer índice, e a cor não tem nada a ver com o banco de dados.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

portar pra indice cdx

Mensagempor rubens » 18 Jan 2018 10:21

Bom dia...
Eu acho que não tem nada a ver com banco...

Altere essa linha
Local Regra:="Pro_Quanti = 0"

Para
Private Regra:="Pro_Quanti = 0"


e vê o que acontece...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

portar pra indice cdx

Mensagempor Nascimento » 19 Jan 2018 12:37

opa amigos depois de muito bater cabeça e com a ajuda de alguns amigos consegui segue o código porque pode ser útil pra mais alguém

# Include "Inkey.ch"
Function  Main()
// Adicionada as 3 linhas + laço abaixo pra criar indices .CDX

set date fren
set cent on

request dbfcdx
rddsetdefault('dbfcdx')
dbsetdriver('dbfcdx')
Use Inotafc Index Inotafc Alias Pro
if ! file("inotafc.cdx")
*   clos all
*   use inotafc
   index on numero tag Codigo to inotafc
   index on nome tag descri to  inotafc
   clos all
endif
set index to inotafc
Cls
private Regra:="Pro->Cancelada"
private Regra1:= "Pro->Qtde"
private var:="0"
do while .t.
Consulta(04,02,22,79,"Inotafc",;
                          {"numero","Nome","Qtde","Cancelada","VT","VU"},{"Numero","Descri‡Æo","Quantidade","C","V.Total","V.Unit."},;
                          {"999999","@!@s20","@E 9,999.999","!","@E 999.99","@E 999.99"},Regra)
                         

//sele pro
set order to 1
//var:= StrZero(val(var),6)
   If DbSeek(var)
     iif (cancelada == "S",alert("Nota Cancelada"),alert(pro->nome))
     loop
   endif
exit
end do
                         
Function Consulta(Li,Ci,Lf,Cf,Arquivo,Campo,Cabecalho,Pict,Regra)

/* Parametros
Li, Ci    - Coordenadas do canto superior esquerdo da janela de visualiza‡Æo
Lf, Cf    - Coordenadas do canto inferior direito da janela de visaliza‡Æo
Arquivo   - Arquivo a ser visualizadp
Indices   - Indices do arquivo    // não precisou
Campo     - Matriz que contem os campos do arquivo a serem  visualizados
Cabecalho - Matriz que contem o cabecalho das colunas a serem visualizados
Pict      - Matriz com as pictures dos campos. Este paramentro ‚ opcional
Regra     - String com a valida‡Æo dos campos. Este parametro ‚ opcional  // não precisou
*/

Local Tela:=SaveScreen(0,0,24,79),Area:=Select(), CorSalva:=SetColor()
Local oMyBrowser, Coluna, nKey, NroDig:=0, Nome:="", Col:=Ci+14

set orde to 1   

DbGotop()                          // para abrir seus arquivos em rede

SetColor("U/W")
@ Li,Ci Clear To Lf,Cf
@ Li,Ci To Lf,Cf
@ Li+2,Ci Clear To Lf,Cf
@ Li+2,Ci To Lf,Cf
@ Li+2,Ci Say Chr(195)
@ Li+2,Cf Say Chr(180)
@ Li+4,Ci Say Chr(195)
@ Li+4,Cf Say Chr(180)
SetCursor(0)
oMybrowser:=TBrowseDb(Li+3,Ci+1,Lf-1,Cf-1)
oMybrowser:HeadSep  :=Chr(196) + Chr(196) + CHr(196)
oMybrowser:ColSep   :=Space(01) + Chr(179) + Space(01)
oMybrowser:ColorSpec:="U/W,W+/BG,R/W,R/BG,W+"

For I:=1 To Len(Campo) 
    Coluna:=TbColumnNew(Cabecalho[I],FieldwBlock(Campo[i],Area))
    Coluna:Picture:=Pict[I]  // mascara dos campos
    oMybrowser:AddColumn(Coluna)
    **********************************************************************
    *      caso eu retire aqui colore todas as colunas mas ;             *
    * caso eu queira so uma coluna especifica escolho o numero da mesma  *
    **********************************************************************
    If i = 4   
       oMybrowser:getcolumn(i):colorblock:={ ||iif(&(regra) = 'S',{3,4},{1,2})}
     ********************************************************* 
     * dessa maneira posso colorir a coluna individualmente  *
     * e a que eu quizer                                     *
     *********************************************************
     endif 
     if i = 3
      Coluna= oMybrowser:getcolumn(i)
       Coluna:colorblock:={||iif(&(regra1) >= 10,{5,1},{1,2})}
    EndIf     
Next

Do While .T.

   Do While ( ! oMyBrowser:Stabilize() )

      nKey:=InKey()

      If nKey != 0
         Exit
      EndIf

   EndDo

   If oMyBrowser:Stable

      If oMyBrowser:HitTop
         @ Lf,Cf-12 Say "| Inicio |"
      ElseIf oMyBrowser:HitBottom()
         @ Lf,Cf-12 Say "|  Fim   |"
      Else
         @ Lf,Cf-12 Say "ÄÄÄÄÄÄÄÄÄÄ"
      EndIf

      nKey:=Inkey(0)
   EndIf

   If nKey == K_ESC
     // DbCloseArea()
      Exit
   ElseIf nKey == K_UP
      oMyBrowser:Up()
   ElseIf nKey == K_DOWN
      oMyBrowser:Down()
   ElseIf nKey == K_LEFT
      oMyBrowser:Left()
   ElseIf nKey == K_RIGHT
      oMyBrowser:Right()
   ElseIf nKey == K_HOME
      oMyBrowser:Home()
   ElseIf nKey == K_END
      oMyBrowser:End()
   ElseIf nKey == K_PGUP
      oMyBrowser:PageUp()
   ElseIf nKey == K_PGDN
      oMyBrowser:PageDown()
   ElseIf nKey == K_CTRL_PGUP
      oMyBrowser:GoTop()
   ElseIf nKey == K_CTRL_PGDN
      oMyBrowser:GoBottom()
   ElseIf nKey == K_CTRL_HOME
      oMyBrowser:PanHome()
   ElseIf nKey == K_CTRL_END
      oMyBrowser:PanEnd()
   ElseIf nKey == K_CTRL_LEFT
      oMyBrowser:PanLeft()
   ElseIf nKey == K_CTRL_RIGHT
      oMyBrowser:PanRight()
   ElseIf nKey == K_ENTER
      Var:=&(Campo[1])  // em que campo preciso dar o seek
*      DbCloseArea()
*      Sele(Area)
      RestScreen(0,0,24,79,Tela)
      SetColor(CorSalva)
      SetCurSor(1)
      Return(Var)
   EndIf
EndDo

*DbCloseArea()
*Sele(Area)
RestScreen(0,0,24,79,Tela)
SetColor(CorSalva)
SetCurSor(1)
Return


dbf usado no teste
INOTAFC.rar
usei essa dbf do amigo rubens
(15.1 KiB) Baixado 46 vezes
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 3 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