Página 1 de 1
indice com harbour/minigui
Enviado: 10 Jul 2008 18:44
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
Re: indice com harbour/minigui
Enviado: 11 Jul 2008 12:15
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.
Re: indice com harbour/minigui
Enviado: 11 Jul 2008 13:19
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
Re: indice com harbour/minigui
Enviado: 11 Jul 2008 13:39
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.
indice com harbour/minigui
Enviado: 11 Jul 2008 16:34
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!
Re: indice com harbour/minigui
Enviado: 11 Jul 2008 17:58
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 !!!
Re: indice com harbour/minigui
Enviado: 12 Jul 2008 09:13
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,
Re: indice com harbour/minigui
Enviado: 14 Jul 2008 15:05
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!