Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 28-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Bueno, con respecto a buscar los martinez y mostrarlos te he propuesto una solución. ¿Porqué no la traduces a código? Sería un buen ejercicio para ti.

Con respecto al tema de porque borra el contenido del TListBox es simplemente porque al principio de todo invocas al método Clear.

No debes llamar al método Clear. Sino que debes realizar el paso inverso al algoritmo que te he pasado:
Analizemos la situación:
Antes ibamos saltando por los items de 4 en 4 y volcando la información. De este modo de cumplía lo siguiente.
Si buscamos por el apellido,
El DNI siempre está en la posición i - 2.
El Nombre siempre está en la posición i - 1
El Apellido siempre está en la posición i
La Ciudad siempre está en la posición i + 1

Por tanto, lo que hacíamos era agregar estos datos en el StringGrid del siguiente modo:
Celda[1,j] = La info de i - 2
Celda[2,j] = la info de i - 1
Celda[3,j] = la info de i
Celda[4,j] = la info de i + 1

A la inversa tenemos:

La info de i - 2 = Celda[1,y]
La info de i - 1 = Celda[2,y]
La info de i = Celda[3,y]
La info de i + 1 = Celda[4,y]

¿Se entiende? No debes hacer Clear, sino sustituir un dado de una celda por el de la posición en un índice:
Código Delphi [-]
ListBox1.Items[i] := StringGrid1.Cells[x,y];

¿Porque y? y no i?
El problema es que cuando agregamos desde el ListBox hacia el StringGrid perdemos referencia a la posición i-esima del campo Apellido de dicha persona. Lo más fácil es, que al agregar la información al StringGrid guardemos dicha posición para asi poder hacer el paso inverso. Tal vez, algo como esto:

Indice - DNI - Nombre - Apellido - Ciudad
De modo que en [1,j] tenemos la posición i-ésima del campo Apellido de los datos de la persona j-esima en el StringGrid.
En [2,j] su DNI.
En [3,j] su Nombre.
Y así sucesivamente.

¿Que significa ese j?
Pues la fila. De modo que si j es 1, nos referimos la persona que ocupa la fila 1 en el StringGrid. Ojo: no confundir a ese j con la posición i en el ListBox.
Cuando j vale 2, nos estamos refiriendo a la persona que ocupa la fila 2.

Por ejemplo, si en [1,1] tenemos el valor 6 quiere decir que en el ListBox, la información del apellido para dicha perona está en 6. Hacemos que i sea 6.
Por tanto:
1. El DNI está en i - 2. Es decir, 6 - 2 = 4. Item[4] = Celda[2,1].
2. El Nombre está en i - 1. Es decir, 6 - 1 = 5. Item[5] = Celda[3,1]
3. El Apellido está en i. Es decir, 6. Item[6] = Celda[4,1]
4. La Ciudad está en i + 1. Es decir, 6 + 1 = 7. Item[7] = Celda[5,1]

Cuando en [1,2] tenemos el valor 14, entonces:
DNI: 14 - 2 = 12. Item[12] = Celda[2,2]
Nombre: 14 - 1 = 13. Item[13] = Celda[3,2]
Apellido: 14. Item[14] = Celda[4,2]
Ciudad: 14 + 1 = 15. Item[15] = Celda[5,2]

¿Se entiende? Tendrás que modificar un poco tus códigos pero se consigue tener referencia a que persona estramos cambiando la información.

kbaby, te he dicho que esto se trata de lógica. No pienses en código... deja que el código salga del análisis de la situación y de un planteo del problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con código. wofox Varios 6 11-12-2007 00:16:21
Ayuda con un codigo JoNieve C++ Builder 0 21-04-2007 12:27:33
Ayuda con error en codigo :-( jorgegetafe Varios 6 07-02-2007 19:29:04
Codigo de Barras.... Ayuda!!!!! adolfoz Varios 14 15-11-2006 17:13:55
Ayuda con código de barras ramiretor Varios 0 28-06-2003 00:42:58


La franja horaria es GMT +2. Ahora son las 19:25:29.


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