Página 1 de 1

Problema TDBCardBox-CardBoxClick

Publicado: Dom Mar 25, 2018 5:36 pm
por Claudio C
Estimados:
En un TDBCardBox que está asociado a un TMemDataSet deseo acceder al registro del dataset correspondiente a la tarjeta sobre la que se hizo click.

Para ello hago:
METHOD DBCardBox1CardClick( oSender, oItem, nPos, nX, nY ) CLASS ....

oMDS:=oSender:oDataSet // Me da referencia al Dataset vinculado !

Pero si quiero acceder a un campo del dataset, por ejemplo:

oMDS:USUARIO

Me devuelve siempre el mismo 'registro' mas allá de que cambie el click a otra tarjeta ( Siempre es el último )
Pareciese que el MemDataSet no esta sincronizado con la posicion en pantalla.

Intenté acceder de otra manera....

oMDS:Getrow() // Devuelve Array Vacio
aFila:=oSender:aData // Matriz de TCardBox ... Inaccesible, da error

El problema es que NO puedo obtener referencia a la tarjeta sobre la que se hizo click !

Cualquier sugerencia es bienvanida
Gracias por su tiempo.

Re: Problema TDBCardBox-CardBoxClick

Publicado: Mié Mar 28, 2018 8:48 pm
por ignacio
Hola Claudio,

Entiendo tu problema. Actualmente sólo la propiedad TDBCardBox:nIndex que se corresponde con un Recno() (o similar) de la tarjeta activa. En el evento OnClick recibes un parámetro de nombre nPos que te indica la posición de la tarjeta en la ventana, pero efectivamente con dicha información no hay manera de saber el recno() de dicha tarjeta.

Tengo que pensar si existe una forma sencilla de solucionar el asunto, pero mientras tanto, te propongo esta solución:

1) Crea un 'dummy' TDBCardItem simplemente indicando que su nSize es cero. En dicho TDbCardItem guarda el recno.

2) En el evento TDBCardBox:OnCardClick() simplemente utiliza la expresión oMyDummyCardBoxItem:Value para recuperar el recno.

Eso es todo.

Un saludo

Re: Problema TDBCardBox-CardBoxClick

Publicado: Lun Abr 02, 2018 11:47 am
por ignacio
Buenos días,

No hay que hacer nada nuevo :-)

El tercer parámetro <nPos> recibe el Recno.

Saludos