Clipper On Line • Ver Tópico - textbox apresenta texto tudo junto
Mudar para estilo Clássico
Projeto MiniGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

textbox apresenta texto tudo junto

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

textbox apresenta texto tudo junto

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.

textbox apresenta texto tudo junto

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.

Código:

#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

textbox apresenta texto tudo junto

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:
Código:
@ 070,230 TEXTBOX TXTNOME WIDTH 413 MAXLENGTH 50 FONT "Courier New" SIZE 10


Abraços,

textbox apresenta texto tudo junto

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:
Código:
   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.

textbox apresenta texto tudo junto

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

textbox apresenta texto tudo junto

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.

textbox apresenta texto tudo junto

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

textbox apresenta texto tudo junto

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...

textbox apresenta texto tudo junto

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.

Código:
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

textbox apresenta texto tudo junto

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 103 vezes

textbox apresenta texto tudo junto

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 103 vezes
Postar uma resposta