Página 1 de 1

Navegação no Dbedit

Enviado: 11 Out 2007 17:13
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.

Enviado: 11 Out 2007 17:15
por DMR
Confesso que pesquisei sobre o assunto aqui no forum e não encontrei nada parecido para Dbedit.

Enviado: 11 Out 2007 18:06
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+

Enviado: 11 Out 2007 22:33
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.

Enviado: 17 Out 2007 16:03
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

Enviado: 18 Out 2007 08:24
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.

Enviado: 18 Out 2007 09:15
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

Enviado: 18 Out 2007 10:34
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.