Clipper/FiveWin - Posicion del cursor...

 
Vista:

Posicion del cursor...

Publicado por Jorge A. González Cano (39 intervenciones) el 11/10/2000 00:00:00
Estimados Clipperos:
Como Uds. sabrán, en el ACHOICE(), puedo manipular el elemento inicial de la matriz que se activará (mostrará) al iniciar dicha función, esto es: al crear un Achoice(), a mi antojo puedo iniciar con el elemento que yo quiera y así al ir moviéndome con las teclas direccionales, sé el no. del elemento del array en el que estoy y poder manipular resultados...
ACHOICE(xUp,xLeft,xDown,xRight,xArray1,xArray2,UDF´s,xPOSINICIAL,)
Ahora bien, ¿puedo hacer lo mismo con DBEDIT()?
Pues me interesa hacer lo mismo pero con la Base de datos abierta y filtrada...
Cualquier ayuda las agradeceré de antemano
Atte.
Jorge A.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Posicion del cursor...

Publicado por skaigualker (210 intervenciones) el 11/10/2000 00:00:00
Efectivamente con la funcion dbedit () puedes hacer lo que pretendes.
La sintaxis de la funcion dbedit () es la siguiente:

dbedit ( nTop, nLeft, nBottom, nRight, acColumns, cUserFunction, ...)

Pues bien en este parametro cUserFunction puedes especificar una funcion que se ejecuta cada vez que el usuario pulse una tecla. En ella pues manipulas los datos como quieras.

Esa funcion va a recibir 2 parametros:
El primero es un numero que te indica:
1) Estas al comienzo del fichero y estas intentando ir a la fila anterior
2) Estas al final del fichero y estas intentando ir al siguiente registro
3) No hay ningun registro para visualizar
4) Se ha pulsado una tecla. Es aqui donde tienes que averiguar con la funcion lastkey() que tecla pulso el usuario y hacer lo que quieras en la base de datos.

El segundo parametro que recibe la funcion es un numero que te indica en que nº de columna de las que indicaste en acColumns esta posicionado el usuario.

Esta funcion no te permite editar directamente los datos de la base de datos. Tienes que utilizar un @ , say "...." get ...

Para poder editar los datos directamente tendrias que utilizar un objeto tbrowse, pero eso es otro tema mas complicado pero tambien mucho mas potente y vistoso.

Espero haberte ayudado y si necesitas un ejemplo escribeme y te lo mando.


Saludos desde Asturias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posicion del cursor...

Publicado por Jorge A. González Cano (39 intervenciones) el 11/10/2000 00:00:00
Hola "Skaigualker":
Gracias por tu ayuda explícita, sólo que ahora me podrías indicar como veo o paso el parámetro de la fila, es decir en tu ejemplo pones acColumns (que me indica en qué columna estoy), ahora bien, hay una que me indique en qué fila estoy?...
Ejem:
01/01/2000 Jorge Glez $200.00 <- Posición Inicial
03/01/2000 Alberto C. $150.00
10/10/2000 Juan Pérez $250.00
...
...
¿Cómo podría hacer para que al momento de bajar el cursor me vaya sumando las cantidades y cuando suba el mismo me vaya restando?; me explico, si estoy en el 1er. renglon, el total es 200.00 y si bajo al 2o. es de 350.00 y si paso al 3ro. es de 600.00 pues me va acumulando, ahora, si regreso al 2o. hay 350.00 y si paso al 1o. hay 200.00
No quiero importunar, así que aprovechando la amabilidad espero respuesta. Gracias
Atte.
Jorge A.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posicion del cursor...

Publicado por skaigualker (210 intervenciones) el 11/10/2000 00:00:00
Bueno, dbedit no devuelve la fila en la que estas, tendrias que utilizar la funcion dbrecno(), pero esto te devuelve el numero del registro, pero solo te sirve si la base de datos no tiene filtro y accedes sin ningun indice, pues en caso contrario el nº de registro fisico no coincide con el nº de orden.

Lo que pretendes creo que lo puedes hacer de la siguiente forma.

Antes de entrar en dbedit, te posicionas en el primer registro (dbgotop) y creas un variable numerica con el valor de este registro. Luego cada vez que pulsen la tecla abajo acumulas en la variable el valor del registro, y cuando pulsan la tecla arriba lo restas. Solo deberias comprobar pues no se si la funcion se ejecuta antes de cambiar de registro o despues.

Espero haberte ayudado, y no dudes en preguntarme lo que quieras, pero hasta el viernes no te contesto, que mañana Jueves es fiesta aqui en España.

Saludos desde Asturias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posicion del cursor...

Publicado por Javier (27 intervenciones) el 11/10/2000 00:00:00
Hola Luke...Saludos desde Argentina!
Cuentame que festejas....
Hasta la proxima
Javier
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posicion del cursor...

Publicado por Javier Albornoz (27 intervenciones) el 11/10/2000 00:00:00
Hola Jorge: No es necesario que para editar los datos uses la clase Tbrowse. Usando GET...READ puedes hacerlo. Para posicionar el GET en el campo que tu estés, debes usar las funciones ROW() y COL()
Cualquier duda escribeme
Espero haberte ayudado
Desde Jujuy - Argentina
Javier Albornoz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Posicion del cursor...

Publicado por Dito (95 intervenciones) el 11/10/2000 00:00:00
Si usas version 5.3x echale una mirada a la funcion OrdKeyNo()

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Espero te sirva

Publicado por boumerang (16 intervenciones) el 18/07/2001 21:51:58
Esto es muy elemental

Procedure TuProcedimiento()

nAcumula:=field->tuCampo
dbedit(a,b,c,d,campos,FUNCIONdeUSUARIO)

function FUCIONdeUSUARIO(modo)

do case
case lastkey=K_DOWN .and. modo#2
nAcumula+=field->tuCampo
case lastkey=K_UP .and. modo#1
nAcumula-=field->tuCampo
endcase
@ x,y say nAcumula
return 1

Saludos

Victor Hugo - Mexico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar