Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Listview filas con numero correlativo (https://www.clubdelphi.com/foros/showthread.php?t=89978)

jonydread 12-03-2016 16:34:47

Listview filas con numero correlativo
 
Estimados, junto con saludar comento que he rebuscado en el foro y no he logrado hacer que los datos que cargo a la listview sean numerados como el RECNO de la DB, anteriormente lo he realizado cargando un ID a la DB pero no me sirve ya que si se borra un registro se pierde un numero y solo lo necesito para contar lo que se carga por ej.

1 item 1
2 item 4
3 item 6

si alguien me podria orientar por favor:confused:.


Saludos!:)

Casimiro Notevi 12-03-2016 18:21:31

Pero el "recno" variará cada vez que borres, insertes, etc.

jonydread 12-03-2016 18:50:24

si como comente la idea es solo contar los items.

ej.

1 item 1
2 item 4
3 item 6

elimino item 4

1 item 1
2 item 6

trate de realizar con zquery.recordcount pero solo me da el total no agrega el numero correlativo.

Casimiro Notevi 12-03-2016 18:56:58

Ummm... de verdad que no entiendo qué estás haciendo ni para qué :confused:

jonydread 12-03-2016 19:23:11

Solo queria que en la primera columna contara los items 1,2,3,4,5,6,7,8,9...... pero bueno mejor recorro la tabla y el total lo muestro en un label mas simple ya que lo que importa es la cantidad de items total que hay.


gracias saludos

Lepe 12-03-2016 19:38:57

Cada elemento del listview, tiene la propiedad Data:TObject para que puedas almacenar ahí lo que quieras.

Lo que guarda es un puntero, si todavía trabajas en 32 bits, te puede valer para poner ahí el "consecutivo" que quieres. No sé en 64 bits como va.

item.Data := pointer( 3 ) ; // 3 es el número que tú le quieres asignar a la columna cero.

Cuando borres un elemento, debes tener un procedimiento que recorra todos los elementos y vuelva a poner el consecutivo (o al menos desde el que has borrado en adelante).

También tienes el evento OnItemData (creo recordar) donde dices "si es la columna cero, toma el valor del item.Data, si la columna es distinta, toma el dato del ZQuery".

A grandes rasgos es así, espero me hayas entendido...

Saludos.

roman 14-03-2016 18:29:29

Cita:

Empezado por jonydread (Mensaje 503287)
trate de realizar con zquery.recordcount pero solo me da el total

Pero ZQuery también tiene la propiedad RecNo. ¿Por qué no la usas?

LineComment Saludos

Lepe 14-03-2016 20:16:00

Ahh!! Que es tan simple como cerrar y abrir la consulta cuando borres un elemento, de esa forma tendrás el RecNo actualizado... buah!, es que hace muuucho que no uso los Zeos.

Bueno es recordarlo.

roman 14-03-2016 21:39:57

Si usa el ListView sólo para mostrar los datos, debería bastar el ZQuery.RecNo. Pero si pueden quitarse filas del listview (suponiendo que tiene un mecanismo que avise al dataset de ello) y no quiere releer el dataset, lo que puede hacer es usar el evento OnCustomDrawItem para actualizar el item con su índice:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Item: TListItem;

begin
  Item := ListView1.Selected;

  if Assigned(Item) then
    ListView1.Items.Delete(Item.Index);
end;

Con esto puede insertar o borrar elementos y siempre aparecerá el correlativo correcto.

LineComment Saludos

jonydread 16-03-2016 02:12:41

Gracias, era tan facil como ZQuery.RecNo y no la vi :(
Solucionado gracias a todos!!


La franja horaria es GMT +2. Ahora son las 13:28:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi