Clipper On Line • Ver Tópico - textbox apresenta texto tudo junto

textbox apresenta texto tudo junto

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 19 Ago 2013 21:53

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
marcelosantos
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor alxsts » 19 Ago 2013 23:42

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2212
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 153 vezes

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 21 Ago 2013 19:20

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.


#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

marcelosantos
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor Toledo » 21 Ago 2013 23:43

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:
@ 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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3039
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 225 vezes
Mens.Curtidas: 235 vezes

textbox apresenta texto tudo junto

Mensagempor alxsts » 22 Ago 2013 00:26

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:
   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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2212
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 153 vezes

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 22 Ago 2013 12:11

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
marcelosantos
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor Pablo César » 22 Ago 2013 12:41

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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 22 Ago 2013 15:19

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
marcelosantos
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor Pablo César » 22 Ago 2013 17:49

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:

 ANSI Only     ANSI / UNICODE 
 LEN()  ->  HMG_LEN() 
 LOWER()  ->  HMG_LOWER() 
 UPPER()  ->  HMG_UPPER() 
 PADC()  ->  HMG_PADC() 
 PADL()  ->  HMG_PADL() 
 PADR()  ->  HMG_PADR() 
 ISALPHA()  ->  HMG_ISALPHA() 
 ISDIGIT()  ->  HMG_ISDIGIT() 
 ISLOWER()  ->  HMG_ISLOWER() 
 ISUPPER()  ->  HMG_ISUPPER() 
 RETURN (ISALPHA(c) .OR. ISDIGIT(c))  ->  HMG_ISALPHANUMERIC() 


Harbour native functions:

 ANSI Only     ANSI / UNICODE 
 SUBSTR()  ->  HB_USUBSTR() 
 LEFT()  ->  HB_ULEFT() 
 RIGHT()  ->  HB_URIGHT() 
 AT()  ->  HB_UAT() 
 RAT()  ->  HB_UTF8RAT() 
 STUFF()  ->  HB_UTF8STUFF() 


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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 22 Ago 2013 19:59

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.

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
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor marcelosantos » 22 Ago 2013 22:16

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 56 vezes
marcelosantos
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 02 Jul 2013 21:12
Cidade/Estado: sao paulo sp
Curtiu: 16 vezes
Mens.Curtidas: 0 vez

textbox apresenta texto tudo junto

Mensagempor Pablo César » 23 Ago 2013 14:58

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 61 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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online 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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro