indice com harbour/minigui

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

Moderador: Moderadores

Avatar do usuário
Zoc
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 24 Set 2004 13:08
Localização: Leme/SP

indice com harbour/minigui

Mensagem por Zoc »

Transferiram minha pergunta para o grupo de harbour, mas eu gostaria de respostas do pessoal da Minigui, pois o problema está em usar a Minigui... em harbour o indice funciona normal.

Criar indices com palavras acentuadas, não ficam na ordem correta.

Já utilizo as linhas abaixo, mas não resolve.
REQUEST HB_CODEPAGE_PT850
HB_SETCODEPAGE( "PT850" )

Já usei também SET CODEPAGE TO PORTUGUESE e nada.

Está faltando algo??

Mauricio
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: indice com harbour/minigui

Mensagem por sygecom »

Eu tenho uma pequena agenda de consultas em Minigui e funciona a acentuação normalmente, e uso apenas no inico de minha app as seguintes linhas:

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

HB_LANGSELECT("PT")
HB_SETCODEPAGE( "PT850" )
Unica coisa que vc tem que cuidar, são se por exemplo vc pegou alguns DBF com registros que era em clipper e quiz usar os mesmo em Minigui,nesse caso teria que ver se esta gravado como ANSI ou OEM. e fazer as devidas alterações para que funcione de um modo apenas na Minigui.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Zoc
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 24 Set 2004 13:08
Localização: Leme/SP

Re: indice com harbour/minigui

Mensagem por Zoc »

Olá Leonardo,

Acho que é por aí que está o problema, veja se vc pode dar mais algumas dicas.

Os dados estão sendo digitados diretamente num programa em Minigui, gravo e atualizo um browse... a ordem não fica correta. Ex:

JOAQUIM
JOSÉ
JOÃO
O (letra o)
RITA
ZULMIRO
Ó (letra O com acento)

Se eu saio para o prompt do Dos e abro o DBF com dbase ou fox, a visualização das letras acentuadas são todas trocadas por simbolos.

Se no próprio dbase/fox eu digito as letras acentuadas no lugar dos simbolos e volto ao programa em Minigui, faço uma nova indexação aí ocorre o seguinte:
A ordem no browse fica correta, mas as letras acentuadas são trocadas por simbolos.

Zoc
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: indice com harbour/minigui

Mensagem por sygecom »

Na verdade teria que ver algum comando apra exibir eles da melhor forma possivel, agora não sei como fazer em Minigui, mas em Hwgui podemos colocar um SET apenas em um determinado FORM onde na verdade é definido pelo tido de FONT:

PREPARE FONT oFontBtn NAME "Arial" WIDTH 0 HEIGHT -14 charset 255 // aqui definido como 255
INIT DIALOG oFrm TITLE cTitulo CLIPPER FONT oFontBtn;
AT 0,0;
SIZE GETDESKTOPWIDTH(),GETDESKTOPHEIGHT()-28 ;
ICON oIcon ;
STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER

Você teria que dar uma olhada no help do Minigui, se tem algo parecido para poder definir na font do FORM.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

indice com harbour/minigui

Mensagem por momente »

Amigos,

Uma maneira que consegui resolver este problema, apesar de achar não ser a melhor para este caso foi a seguinte:

Código: Selecionar todos

    .
    .
    .
    Index On RemoverAcentos(Titular)   	TAG TAG1
    .
    .
    .

//================================================================//
// Funcao........: Remocao de acentos (formato ANSI)
// Programador...: Marcos Antonio Gambeta
// Contato.......: dicasdeprogramacao@yahoo.com.br
// Website.......: http://dicasprog.codigolivre.org.br
//================================================================//
// Linguagem.....: Harbour/xHarbour
// Bibliotecas...:
// Plataforma....: Windows
//================================================================//

Function RemoverAcentos ( cTexto )

   // acento agudo
   cTexto := StrTran( cTexto, "á", "a" )
   cTexto := StrTran( cTexto, "é", "e" )
   cTexto := StrTran( cTexto, "í", "i" )
   cTexto := StrTran( cTexto, "ó", "o" )
   cTexto := StrTran( cTexto, "ú", "u" )
   cTexto := StrTran( cTexto, "Á", "A" )
   cTexto := StrTran( cTexto, "É", "E" )
   cTexto := StrTran( cTexto, "Í", "I" )
   cTexto := StrTran( cTexto, "Ó", "O" )
   cTexto := StrTran( cTexto, "Ú", "U" )

   // acento circunflexo
   cTexto := StrTran( cTexto, "â", "a" )
   cTexto := StrTran( cTexto, "ê", "e" )
   cTexto := StrTran( cTexto, "î", "i" )
   cTexto := StrTran( cTexto, "ô", "o" )
   cTexto := StrTran( cTexto, "û", "u" )
   cTexto := StrTran( cTexto, "Â", "A" )
   cTexto := StrTran( cTexto, "Ê", "E" )
   cTexto := StrTran( cTexto, "Î", "I" )
   cTexto := StrTran( cTexto, "Ô", "O" )
   cTexto := StrTran( cTexto, "Û", "U" )

   // til
   cTexto := StrTran( cTexto, "ã", "a" )
   cTexto := StrTran( cTexto, "õ", "o" )
   cTexto := StrTran( cTexto, "Ã", "A" )
   cTexto := StrTran( cTexto, "Õ", "O" )

   // ce-cedilha
   cTexto := StrTran( cTexto, "ç", "c" )
   cTexto := StrTran( cTexto, "Ç", "C" )

   // trema
   cTexto := StrTran( cTexto, "ü", "u" )
   cTexto := StrTran( cTexto, "Ü", "U" )

   // crase
   cTexto := StrTran( cTexto, "à", "a" )
   cTexto := StrTran( cTexto, "è", "e" )
   cTexto := StrTran( cTexto, "ì", "i" )
   cTexto := StrTran( cTexto, "ò", "o" )
   cTexto := StrTran( cTexto, "ù", "u" )
   cTexto := StrTran( cTexto, "À", "A" )
   cTexto := StrTran( cTexto, "È", "E" )
   cTexto := StrTran( cTexto, "Ì", "I" )
   cTexto := StrTran( cTexto, "Ò", "O" )
   cTexto := StrTran( cTexto, "Ù", "U" )

Return cTexto

Valeu!
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: indice com harbour/minigui

Mensagem por sygecom »

Rogério até entendo que resolve, mas vai concordar comigo que esse tipo de limitação nos devemos deixar lá com o Clipper neh !!! mas mesmo assim esta valendo tudo que for para contribuir é bem vindo !
Bom final de semana para vc !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: indice com harbour/minigui

Mensagem por Toledo »

Mauricio, apesar de você estar usando estes comandos com a MiniGui, na verdade eles são do Harbour, por isto eles podem ser usados com outras libs gráficas (para Harbour), como Fivewin, HwGui, xHGTK, etc. Então, como estes comandos tem como base o Harbour, o seu tópico será movido novamente para a seção [x]Harbour.

Eu tenho um programa desenvolvido em MiniGui, que também estava com este mesmo problema de indexação fora de ordem com palavras com acento. A única forma encontrada foi realmente a utilização de uma função identica a que o Rogério postou ai em cima, na chave de indexação.

Por exemplo:
INDEX ON RemoverAcentos(Nome) TAG Nome TO ALUNOS

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Re: indice com harbour/minigui

Mensagem por momente »

Amigo Leonardo,

Eu disse que não era a melhor maneira, concordo plena mente com vc, mas tentei algumas coisas e não deram certo, então, para conseguir resolver rapidamente fiz isto.

Estou acompanhando o tópico para aprender a melhor maneira.

valeu!
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Responder