Página 1 de 1
textbox apresenta texto tudo junto
Enviado: 19 Ago 2013 21:53
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
textbox apresenta texto tudo junto
Enviado: 19 Ago 2013 23:42
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.
textbox apresenta texto tudo junto
Enviado: 21 Ago 2013 19:20
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
textbox apresenta texto tudo junto
Enviado: 21 Ago 2013 23:43
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,
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 00:26
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.
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 12:11
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
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 12:41
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.
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 15:19
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
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 17:49
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:
|  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
Enviado: 22 Ago 2013 19:59
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
textbox apresenta texto tudo junto
Enviado: 22 Ago 2013 22:16
por marcelosantos
Pablo, saudações
segue o meu pequeno projeto inteiro.
é modesto, estou começando a pegar o jeito agora.
abraços
Marcelo
textbox apresenta texto tudo junto
Enviado: 23 Ago 2013 14:58
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.