Navegação no Dbedit

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

DMR
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 03 Out 2007 09:15
Localização: Porto Ferreira-SP

Navegação no Dbedit

Mensagem por DMR »

Boa tarde pessoal !


Por exemplo: tenho um DBF com codigo, nome e descrição. O tamanho do campo descrição é muito grande para mostrar td na mesma tela do Dbedit. Como faço para mostrar o codigo e o nome na dbedit e a medida que navego na mesma, o sistema mostre uma janela abaixo com o conteudo do campo descrição de cada registro. Espero que tenham entendido.

Obrigado a todos.
DMR
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 03 Out 2007 09:15
Localização: Porto Ferreira-SP

Mensagem por DMR »

Confesso que pesquisei sobre o assunto aqui no forum e não encontrei nada parecido para Dbedit.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem por ANDRIL »

Ola,

Faça o seguinte:


PROCEDURE exibe

//--abre o seu DBF
USE PRODUTO

priv ar1[2],ar2[2]
ar1[1]="codigo"
ar1[2]="nome"
ar2[1]="Código"
ar2[2]="Nome"
dbedit(00,00,23,79,ar1,"minhafuncao","",ar2)
return

function minhafuncao
//--se a descricao couber em 1 linha
@24,00 say descricao

//--ou se quiser exibir em um box
//--supondo que o campo descricao tenha 80 caracteres e deseja exibir
//--em 2 linha de 40 caracteres

@20,19 to 23,60
@21,20 say padc(substr(descricao,01,40), 40) //-exibe 1 linha com 40 col
@22,20 say padc(substr(descricao,41,40), 40) //-exibe 2 linha com +40 col

//--lembre-se que descricao (q esta acima) é o se campo da descricao

do case
case lastkey()=27
return 0

otherwise
return 1
endcase


Espero q seja isso!,

At+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
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á

Mensagem por Pablo César »

Não canso de aconselhar a usar o TBROWSE em lugar do DBEDIT. Mas claro, o trabalho que terá em aprender o TBROWSE, talvez não compense esse trabalho pela indicação do colega Andril que é para DBEDIT.

Digo do TBROWSE ora porque em DBEDIT eu até esquecí como usar... e não faço muita questão de saber também. Mas não sei como ficaria se precisasse de editar o campo que excede 80 colunas. Ja no TBROWSE bastaria apenas colocar o picture "@S40" (por exemplo) e daria para editar tranquilamente o campo. Mas acredito que você poderia tratar a edição na função de controle do DBEDIT com um GET ou GETINPUT (da CT.LIB) de forma separada.
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.
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Mensagem por Mário Isa »

Pablo César escreveu:Ja no TBROWSE bastaria apenas colocar o picture "@S40" (por exemplo) e daria para editar tranquilamente o campo.
Em DBEDIT() dá para editar o campo com a cláusula mencionada também.

Mário
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á

Mensagem por Pablo César »

Obrigado Mario por ter mencionado, eu ja não lembro quase mais nada sobre o DBEDIT. Mas se então existe esse recurso, então por quê teria que dividir a tela ? Para visualização total do campo ? As vezes, dependendo o tamanho, fica muito extenso, quem sabe não possa ser exibido em janela modo "editor de textos". Esse recurso pode ser providenciado na exibição de determinado campo/registro no TBROWSE.
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.
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Mensagem por Mário Isa »

Pablo César escreveu:Mas se então existe esse recurso, então por quê teria que dividir a tela ? Para visualização total do campo ?
Primeiro eu gostaria de acrescentar, na função dada pelo ANDRIL, o vetor que contém as cláusulas pictures mais o campo descrição. Veja:

//--abre o seu DBF
USE PRODUTO
// Criação dos vetores
v1 := {"codigo" , "nome" , "descricao" } // Nomes dos campos
v2 := {"99999" , "@!" , "@!S40" } // Cláusulas pictures
v3 := {"Código" , "Nome" , "Descrição" } // Nomes dos cabeçalhos

// dbedit(00,00,23,79,ar1,"minhafuncao","",ar2)
DBEDIT(7,1,18,78,V1,"minhafuncao",V2,V3)

return nil

Considerações finais:
1-Para editar o campo descrição foi colocada a cláusula @!S40. Mesmo não sendo editada é exibido o conteudo do campo até a posição 40.
2-A função minhafuncao(), feita por ANDRIL está correta. Ela só exibe o campo a cada vez que o ponteiro do registro é re-posicionado. Também pode-se colocar cores diferentes lá bastando utilizar o comando SETCOLOR() para isso.
3-A idéia do colega Pablo César também é válida no sentido de se utilizar o editor de campo memo apenas para visualizar o conteúdo de um campo muito extenso.

Mário
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á

Mensagem por Pablo César »

Mário Isa escreveu:utilizar o editor de campo memo apenas para visualizar o conteúdo de um campo muito extenso.
Ou até mesmo listar na tela com SAY de tal linha até tal linha ou utilizar uma função que mostrasse o campo quebrando as linhas conforme final de cada palavra até finalizar o espaço ou tamanho do campo.
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