Ola, como faco para saber onde esta o cursor no dbedit linha colinha campo??
ex.
tenho uma consulta com os totais de duplicatas a vencer, vencidas, etc..
quando o usuario teclar enter em um valor devera aparecer todas as duplicatas que geraram esse valor, para isso tenho um dbf temporario que guarda essas duplis, mas tenho que saber em que posicao foi dado enter para mostrar o mes certo...
Obrigado...
posicao do dbedit??
Moderador: Moderadores
-
ReinaldoFreitas
- Usuário Nível 2

- Mensagens: 97
- Registrado em: 02 Jul 2005 15:39
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
posicao do dbedit??
Utilize com o 7º parâmetro (nome da função) você poderá fazer a suas implementações alí:
Tem um bom exemplode manipulação de substring dentro do MEMOEDIT, aqui: https://pctoledo.org/forum/viewtopic.php?t=5521
Código: Selecionar todos
Texto:=MEMOEDIT(Texto,nLin1,nCol1,nLin2,nCol2,.T.,"USERFUN",46)
FUNCTION USERFUN(MODO,LINHA,COLUNA)
PUBLIC INS_MUDA,MODET
IF MODO=ME_INIT
INS_MUDA=.F.
MODET=.F.
KSETINS(.F.)
SETCURSOR(1)
ENDIF
IF MODO=0
@ 21,40 SAY " Linha: "+STRZERO(LINHA,3,0)+" " COLOR CONTECOR[12]
@ 21,53 SAY " Coluna: "+STRZERO(COLUNA,3,0)+" " COLOR CONTECOR[12]
QTECLA:=LASTKEY()
IF !(QTECLA=27)
IF QTECLA=7 .OR. QTECLA=8 .OR. QTECLA=9 .OR. QTECLA=13 .OR. QTECLA=127 .OR. (QTECLA>32 .AND. QTECLA<255)
MODET=.T.
ENDIF
ENDIF
ENDIF
../..
RETURN 0Um 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.
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.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: posicao do dbedit??
Olá!
No teu caso, creio que a informação do mes que você precisa está na linha ativa da DBEdit(). Assim sendo, não precisaria saber em que coluna o usuário está posicionado.
Em ambos os casos, no momento em que Enter é pressionado, a informação que você precisa estará no registro atual do DBF que está por trás da DBEdit().
Se realmente precisar saber em que coluna o usuário está posicionado, você terá obrigatóriamente que especificar uma função de usuário para a DBEdit() pois sempre que a DBEdit() executa a função, passa automaticamente dois parâmetros: o modo atual da função e a coluna onde o cursor está posicionado (ambos numéricos).
A DBEdit() se comporta diferentemente, dependendo se o programador implementa ou não uma função para controle das teclagens. Se a função de controle não for passada, a DBEdit() se encerra quando o usuário tecla Enter ou Esc. Caso a função seja passada, a tecla Enter deverá ser tratada dentro da função.ReinaldoFreitas escreveu:mas tenho que saber em que posicao foi dado enter para mostrar o mes certo...
No teu caso, creio que a informação do mes que você precisa está na linha ativa da DBEdit(). Assim sendo, não precisaria saber em que coluna o usuário está posicionado.
Em ambos os casos, no momento em que Enter é pressionado, a informação que você precisa estará no registro atual do DBF que está por trás da DBEdit().
Se realmente precisar saber em que coluna o usuário está posicionado, você terá obrigatóriamente que especificar uma função de usuário para a DBEdit() pois sempre que a DBEdit() executa a função, passa automaticamente dois parâmetros: o modo atual da função e a coluna onde o cursor está posicionado (ambos numéricos).
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: posicao do dbedit??
ihhh viajei.... confundí dbedit com memoedit... (desculpem, ontem eu tava com a cabeça sei lá onde..)
Com Tbrowse é mais fácil de implemenatr outrs funções do que dbedit...
Com Tbrowse é mais fácil de implemenatr outrs funções do que dbedit...
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.
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.
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: posicao do dbedit??
Olha, não se é bem isto, mas uso o dbedit() assim:
Atente para o "SAI31" no dbedit()
Atente para o "SAI31" no dbedit()
Código: Selecionar todos
PRIVATE vet1[8],vet2[8],vet3[8],tmat:=SPACE(8),tdesc:=0.00,tip:=SPACE(1),ent:=SPACE(1)
PRIVATE vetf1[10],vetf2[10],vetf3[10]
PRIVATE vetx1[10],vetx3[10]
PRIVATE cliaux:=0,tcli:=SPACE(4),tpago:=0.00,treceb:=0.00,impret:=SPACE(1),impime:=SPACE(1)
PRIVATE tnom:=SPACE(38),tend:=SPACE(39),tc1:=SPACE(38),tc2:=SPACE(38),tc3:=SPACE(38)
PRIVATE tc4:=SPACE(38),trota:=SPACE(30),tref:=SPACE(30),ttel:=SPACE(34)
SELECT TEMP
SET RELATION TO MATVEN INTO MER
GO TOP
DO WHILE .T.
SET KEY -1 TO GUARDAR()
SET KEY -2 TO VOLTAR()
trota = SPACE(30)
doc = SPACE(5)
CALL TVEN
SET COLOR TO W/N,W/N
@ 01,63 SAY funcionario
SELECT TEMP
vet1[1] = "MATVEN"
vet1[2] = "MATNOM"
vet1[3] = "QTDVEN"
vet1[4] = "UNIVEN"
vet1[5] = "TOTVEN"
vet1[6] = "ENTVEN"
vet1[7] = "MATNOM1"
vet2[1] = "@R AA-99-9999"
vet2[2] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
vet2[3] = "99999.99"
vet2[4] = "99999.99"
vet2[5] = "999999.99"
vet2[6] = "X"
vet2[7] = "Compl"
vet3[1] = "Codigo"
vet3[2] = "Descricao"
vet3[3] = "Quantidade"
vet3[4] = "Unitario"
vet3[5] = "Total"
vet3[6] = "Entrega"
vet3[7] = "Complemento"
SETCOLOR("W/B,B/W")
DBEDIT(04,02,18,77,vet1,"SAI31","",vet3)
EXIT
ENDDO
SET KEY -1 TO
SET KEY -2 TO
SELECT 1
USE
SELECT 2
USE
SELECT 3
USE
SELECT 4
USE
SELECT 5
USE
SELECT 6
USE
SELECT 7
USE
SELECT 8
USE
SELECT 9
USE
SELECT 10
USE
SELECT 11
USE
SELECT 12
USE
SELECT 13
USE
CLOSE ALL
RETURN
//==================================================
FUNCTION SAI31()
Mensagem( " ")
IF LASTKEY() = 105 .OR. LASTKEY() = 73
Inc31()
RETURN(2)
ELSEIF LASTKEY() = 69 .OR. LASTKEY() = 101
IF .NOT. EMPTY(MATVEN)
IF Confirma( "S03D" )
SELECT TEMP
DELETE
PACK
ENDIF
RETURN(2)
ENDIF
ELSEIF LASTKEY()= 65 .OR. LASTKEY() = 97
IF .NOT. EMPTY(MATVEN)
Alt31()
RETURN(2)
ENDIF
ELSEIF LASTKEY()= 67 .OR. LASTKEY() = 99
COM31()
RETURN(2)
ELSEIF LASTKEY()= -3
ORC31()
RETURN(2)
ELSEIF LASTKEY()= -4
Orcaixa()
// Atupre()
RETURN(2)
ELSEIF LASTKEY()= -5
Voltic()
RETURN(2)
ELSEIF LASTKEY()= -6
Anula()
RETURN(2)
ELSEIF LASTKEY()= 75 .OR. LASTKEY() = 107
CASA31()
RETURN(2)
ELSEIF LASTKEY()= 90 .OR. LASTKEY() = 122
IF Confirma("Posso zerar a venda??? S/N")
SELECT TEMP
ZAP
ENDIF
RETURN(2)
ELSEIF LASTKEY()= 70 .OR. LASTKEY() = 102
IF .NOT. EMPTY(MATVEN)
FE31()
SELECT TEMP
ZAP
PACK
ENDIF
SELECT TEMP
RETURN(2)
ELSEIF LASTKEY()= 84 .OR. LASTKEY() = 116
IF .NOT. EMPTY(MATVEN)
Altent()
ENDIF
SELECT TEMP
RETURN(2)
ELSEIF LASTKEY()= 80 .OR. LASTKEY() = 112
Par31()
RETURN(2)
ELSEIF LASTKEY()= 27
IF Confirma("Deseja Sair do Programa??S/N")
SELECT TEMP
ZAP
RETURN(0)
ENDIF
ENDIF
IF pcusto = "S"
@ 23,60 SAY MER->PRECST PICTURE "99999.99" COLOR "W/R"
ENDIF
SET KEY -1 TO GUARDAR()
SET KEY -2 TO VOLTAR()
SELECT TEMP
return(1)
Re: posicao do dbedit??
Tente desta forma:
Sua linha que chama a função DBEDIT
Aqui a função que identifica o que voce precisa.
Bom, não testei, mais acho que se precisa descobrir o campo, linha e coluna acho que isso deve resolver seu problema.
Ate+
Sua linha que chama a função DBEDIT
Código: Selecionar todos
priv ar1[1],ar2[1]
ar1[1]:="nome";ar2[1]:="Cliente"
dbedit(06,02,14,77,ar1,"udf_2","",ar2)
Código: Selecionar todos
function udf_2
parameters modo, campo
*--aqui recebe na var T o nome do campo e em T1 o valor do campo
t:= ar1[campo]
t1:= &t
*--aqui recebe a linha e coluna da celula destacada no dbedit
l1_=row()
c1_=col()
if lastkey()=13
@24,00 clea to 24,79
@24,00 say padc("Este é o nome selecionado: "+t1,79)
inkey(2.0)
@24,00 clea to 24,79
return 1
elseif lastkey()=27
return 0
else
return 1
endif
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
