textbox apresenta texto tudo junto

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

saudaões

ao exibir o conteúdo de um campo no texbox aparece da seguinte forma:

riodejaneiro

mas no dbf o correto é rio de janeiro.

parece que ignora os espações entre as palavras.

obrigado pela ajuda
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

textbox apresenta texto tudo junto

Mensagem por alxsts »

Olá Marcelo.

Por favor, ajude os colegas a ajudá-lo. Poste exemplos do código que você está usando, de sua base de dados, se usa NTX, CDX, versão do Harbour... Enfim, subsídios que possam direcionar o pensamento para alguma ideia concreta. Da forma como você coloca, fica difícil, muito vago.
marcelosantos escreveu:parece que ignora os espações entre as palavras.
[]´s
Alexandre Santos (AlxSts)
marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

Desculpe, tem razão.

Estou usando a HMG 3.1.4, e o Harbour que vem junto com a IDE, uso dbfs indexados com cdx

segue o código com problemas. obrigado.

Código: Selecionar todos


#include "hmg.ch"

Function Cadcli
     AbreTabelas()
                    
    DEFINE WINDOW FrmClientes;
        AT 0,0 ;
        WIDTH 800 ;
        HEIGHT 600 ;
        TITLE 'Cadastro de Clientes' ; 
        modal;
        on init atualiza();

       DEFINE TAB Tab_1 AT 40 , 30 WIDTH 730 HEIGHT 460 VALUE 1 FONT "Arial" SIZE 9 TOOLTIP "Cadastro de Clientes" ON CHANGE Nil
        PAGE "Clientes"
            @ 070,180 Label LblNome Value "Nome"
            @ 070,230 TEXTBOX TXTNOME WIDTH 413 MAXLENGTH 50
        END PAGE 
        PAGE "Page 2"
        END PAGE 
    END TAB 
    END WINDOW
    ACTIVATE WINDOW FrmClientes
Return

procedure AbreTabelas
     
     SELECT 1 
     USE C:\PRG\NFEWIN\DADOS\CLIENTES.DBF shared 
     index on codigo tag codigo to C:\PRG\NFEWIN\DADOS\CLIENTES.CDX
     index on nome   tag nome  to C:\PRG\NFEWIN\DADOS\CLIENTES.CDX
     index on endereco tag endederco to C:\PRG\NFEWIN\DADOS\CLIENTES.CDX
     set index to C:\PRG\NFEWIN\DADOS\CLIENTES.CDX
     set order to tag codigo
     dbgotop()
return

procedure atualiza()
    FrmClientes.TxtNome.Value      :=clientes->nome
return



Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

textbox apresenta texto tudo junto

Mensagem por Toledo »

Marcelo, você tem certeza que tem os espaços no campo do DBF? Pois no seu código não tem nada que retira estes espaços!

Tente o seguinte:

Código: Selecionar todos

@ 070,230 TEXTBOX TXTNOME WIDTH 413 MAXLENGTH 50 FONT "Courier New" SIZE 10
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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

textbox apresenta texto tudo junto

Mensagem por alxsts »

Olá!

Tive a mesma impressão do Toledo. Não vi nada estranho no código. É feito um DbGoTop() e o nome do primeiro registro (clientes->nome) é exibido.

Tem certeza que o conteúdo do campo está correto? Experimente este código na tua função atualiza:

Código: Selecionar todos

	procedure atualiza()

       clientes->( DbSkip( 5 ) )

	    FrmClientes.TxtNome.Value      := If( clientes->( Eof() ), "Fim de arquivo", clientes->nome )
	return
Não sei se isto é um teste apenas mas, não é normal criar índices a cada vez que se abre uma tabela. Você deve ter uma rotina específica para isso.
[]´s
Alexandre Santos (AlxSts)
marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

Toledo escreveu:Não sei se isto é um teste apenas mas, não é normal criar índices a cada vez que se abre uma tabela. Você deve ter uma rotina específica para isso
Toledo, eu estava testando o dbf, sei que tem que tratar a abertura dos arquivos e índices.
alxsts escreveu:Olá!

Tive a mesma impressão do Toledo. Não vi nada estranho no código. É feito um DbGoTop() e o nome do primeiro registro (clientes->nome) é exibido.

Tem certeza que o conteúdo do campo está correto? Experimente este código na tua função atualiza:
Realmente alxts não tem nada estranho, o conteúdo do campo esta correto, é um campo que armazena o município.por exemplo: São Paulo, Rio de Janeiro, Espirito Santo, Santana de parnaiba.
Eu não fiz nenhum tratamento apena atribui o conteúdo do campo ao controle
Toledo escreveu:Marcelo, você tem certeza que tem os espaços no campo do DBF? Pois no seu código não tem nada que retira estes espaços!
Tenho certeza Toledo, eu criei o dbf e cadastrei alguns endereços para testar o form de cadastro, também acho estranho.
Toledo escreveu:Marcelo, você tem certeza que tem os espaços no campo do DBF? Pois no seu código não tem nada que retira estes espaços!

Tente o seguinte:
Expandir visualizacaoVer codigo
1@ 070,230 TEXTBOX TXTNOME WIDTH 413 MAXLENGTH 50 FONT "Courier New" SIZE 10
finalmente mudei a fonte e deu certo .
Mas na teoria, não deveria visualizar corretamente com qualquer tipo e tamanho de fonte ?
Os amigos tem alguma sugestão sobre qual melhor fonte usar para padronizar o meu sistema ?

obrigado a todos
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

textbox apresenta texto tudo junto

Mensagem por Pablo César »

marcelosantos escreveu:Estou usando a HMG 3.1.4
Marcelo, atualize a versão do seu HMG. Hoje estamos na versão 3.1.5 e está mais estável. Ainda não consegui ler bem o seu problema. MAs ter a ultima versão geralmente é o mais indicado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

Pablo César escreveu:Marcelo, atualize a versão do seu HMG. Hoje estamos na versão 3.1.5 e está mais estável. Ainda não consegui ler bem o seu problema. MAs ter a ultima versão geralmente é o mais indicado.
Pablo, saudações.
vou atualizar conforme você esta falando.

o problema é assim:

tenho um dbf que cadastra os clientes
nesse dbf tem um campo que armazena a cidade do cliente

no dbf a cidade esta cadastrada assim: RIO DE JANEIRO

ao usar um textbox no hmg e atribuir o valor desse campo, a nformacao aparece assim na tela:

RIODEJANEIRO quando deveria aparecer assim: RIO DE JANEIRO com os espaços corretos do texto.

o Toledo disse para usar a fonte courier new de 10 eu fiz o teste e deu certo.
porem não seria correto sair o texto na tela com qualquer fonte?

abraços

marcelo
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

textbox apresenta texto tudo junto

Mensagem por Pablo César »

Oi Marcelo,

Você poderia postar, como você está atribuindo o valor do campo ao TextBox ?

Estas funções devem ser substituídas na versão UNICODE:
&nbspANSI Only&nbsp&nbsp &nbsp&nbspANSI / UNICODE&nbsp
&nbspLEN()&nbsp&nbsp->&nbsp&nbspHMG_LEN()&nbsp
&nbspLOWER()&nbsp&nbsp->&nbsp&nbspHMG_LOWER()&nbsp
&nbspUPPER()&nbsp&nbsp->&nbsp&nbspHMG_UPPER()&nbsp
&nbspPADC()&nbsp&nbsp->&nbsp&nbspHMG_PADC()&nbsp
&nbspPADL()&nbsp&nbsp->&nbsp&nbspHMG_PADL()&nbsp
&nbspPADR()&nbsp&nbsp->&nbsp&nbspHMG_PADR()&nbsp
&nbspISALPHA()&nbsp&nbsp->&nbsp&nbspHMG_ISALPHA()&nbsp
&nbspISDIGIT()&nbsp&nbsp->&nbsp&nbspHMG_ISDIGIT()&nbsp
&nbspISLOWER()&nbsp&nbsp->&nbsp&nbspHMG_ISLOWER()&nbsp
&nbspISUPPER()&nbsp&nbsp->&nbsp&nbspHMG_ISUPPER()&nbsp
&nbspRETURN (ISALPHA(c) .OR. ISDIGIT(c))&nbsp&nbsp->&nbsp&nbspHMG_ISALPHANUMERIC()&nbsp
Harbour native functions:
&nbspANSI Only&nbsp&nbsp &nbsp&nbspANSI / UNICODE&nbsp
&nbspSUBSTR()&nbsp&nbsp->&nbsp&nbspHB_USUBSTR()&nbsp
&nbspLEFT()&nbsp&nbsp->&nbsp&nbspHB_ULEFT()&nbsp
&nbspRIGHT()&nbsp&nbsp->&nbsp&nbspHB_URIGHT()&nbsp
&nbspAT()&nbsp&nbsp->&nbsp&nbspHB_UAT()&nbsp
&nbspRAT()&nbsp&nbsp->&nbsp&nbspHB_UTF8RAT()&nbsp
&nbspSTUFF()&nbsp&nbsp->&nbsp&nbspHB_UTF8STUFF()&nbsp
Geralmente daria errado, se a string contivesse algum caracter de acentuação portuguesa. Mas é estranho que mudar as fontes esteja influenciando... Se puder postar um pequeno exemplo e parte do dbf seria bom para testar...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

Pablo, saudações
Pablo César escreveu:Oi Marcelo,

Você poderia postar, como você está atribuindo o valor do campo ao TextBox ?

Estas funções devem ser substituídas na versão UNICODE:
Eu estou usando a versão ANSI da HMG 3.1.4
O dbf não tem caractere acentuado
É uma simples atribuição sem nenhuma função de tratamento de strings

já havia postado anteriormente como o código foi escrito mas segue a função que atualiza os txtbox.
muito obrigado pela ajuda e aos demais colegas também.

Código: Selecionar todos

procedure atualiza()
    
    FrmClientes.TxtCodigo.value    := strzero(clientes->codigo,5)
    FrmClientes.TxtNome.Value      :=clientes->nome
    FrmClientes.TxtCnpj.value      :=clientes->cnpj
    FrmClientes.TxtIe.Value        :=clientes->ie        
    Frmclientes.txtEndereco.Value    :=clientes->endereco
    FrmClientes.txtNumero.Value     :=clientes->numero
    FrmClientes.txtCompl.Value      :=clientes->complement        
    FrmClientes.txtBairro.Value     :=clientes->Bairro        
    FrmClientes.TxtUf.Value        :=clientes->uf
    FrmClientes.TxTCep.Value       :=clientes->cep  
    FrmClientes.TxtEmal.Value      :=clientes->email
    FrmClientes.TxtSite.Value      :=clientes->site
    FrmClientes.TxtResponsavel.Value:=clientes->responsave
    
return


marcelosantos
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 02 Jul 2013 21:12
Localização: sao paulo sp

textbox apresenta texto tudo junto

Mensagem por marcelosantos »

Pablo, saudações

segue o meu pequeno projeto inteiro.

é modesto, estou começando a pegar o jeito agora.

abraços

Marcelo
Anexos
nfewin.rar
(869.92 KiB) Baixado 160 vezes
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

textbox apresenta texto tudo junto

Mensagem por Pablo César »

Oi Marcelo,

Fiz pequenas alterações e aproveitar para testar a questão de que forma o HMG UNICODE grava nos dbfs. Se você optou mesmo por trabalhar no padrão UNICODE, você terá que levar em consideração que os dados também serão gravados no padrão UNICODE. Na era do Clipper, tínhamos como padrão não fazer qualquer acentuação. Mas isso no padrão Windows é dificil pedir isso para os usuários. Então acho que deveria partir mesmo para esse padrão, só que se o seus dbfs estão no padrão ANSI, você terá que converter todos os registros para o padrão UNICODE.

As alterações que fiz foram:
- Os prgs (Principal.prg e CadCli.prg) estavam no padrão ANSI. Isso dá para perceber (se usas o Notepad++ que vem na HMG) no menu "Enconding" ou "Formatar" (depende o idioma que está o seu Notepad++).
- Corrigi todas as strings que estavam acentuadas (redigitei).
- O arquivo fmg estava no padrão ANSI. Claro que este arquivo não estava carregando, mas já deixei para ser aberto na IDE UNICODE.
- Comentei toda a questão do idioma:
   request hb_codepage_ptiso
   hb_cdpSelect("PTISO")
- Setei como: SET LANGUAGE TO PORTUGUESE
- Mudei o path dos arquivos de dados. Pois na minha opinião você deveria deixar os dados abaixo do projeto. Mas o fiz apenas para que funcionasse.
- Adicionei a função Grava(). Você poderá notar que o campo ENDERECO está gravado em UNICODE. Veja o 2ª registro (JAPÃO, com acento circunflexo)

Não tinha campo algum de cidade. Mas acredito que agora você está no rumo certo. Anexei os arquivo convertidos e compilado para sua apreciação.

Espero que consiga progredir no desenvolvimento do projeto, qualquer outra dúvida pode postá-la.
Anexos
projeto.rar
(874.13 KiB) Baixado 193 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder