![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#34
|
||||
|
||||
|
Bueno kbaby, he terminado el ejemplo. Espero que con el ejemplo se entienda.
El ejemplo consiste en un código que guarda y abre un archivo de texto. Puedes comprobar que funciona para uno o más datos... no importa cuandos cambios sean. Notarás que que se hacen en directo: en su posición natural. Nada de estar eliminando y agregando. Separé el código en funciones y procedimientos a propósito para tu notaras como es que se reutiliza código y además para no darte todo regalado. Estudia el código no pierdas esfuerzo en comprender que es un procedimiento y que es una función. Lo descubrirás a medida de veas código. Te explico porqué funciona. Básicamente tenemos una estructura de esta forma en el archivo: 0 - DNI 1 - NOMBRE 2 - APELLIDO 3 - CIUDAD y se va repitiendo. Bueo imagina ahora que la primera persona tiene un valor indice 0. La segunda un indice 1, y asi sucesivamente. Entonces podemos afirmar esto: Código:
Posicion en archivo | Indice o posición de la persona ----------------------------------------------------------------- 0 - DNI1 | 0 - Persona1 1 - Nombre1 | 2 - Apellido1 | 3 - Ciudad1 | ................................................................. 4 - DNI2 | 1 - Persona2 5 - Nombre2 | 6 - Apellido2 | 7 - Ciudad2 | ................................................................. ¿Que tiene en común el indice con la posición de los datos? Fácil: su división entera con 4. Hagamos cálculos: 0 div 4 = 0 ... 3 div 4 = 0 4 div 4 = 1 ... 7 div 4 = 1 8 div 4 = 2 Veamos... en posición 8, quien comienza... exacto! Una nueva persona. ¿Que hago yo? Me valgo de ese indice para tener referencia a la persona. Ese indice lo tengo que guardar en algún lado para poder recuperar los datos desde la rejilla hacia el LisBox. Yo preferí guardar ese dato, en la columna 0 de la rejilla de modo que se impida modificarlo. En las demás celdas de dicha fila se guardan sus datos. ¿Cómo se hace entonces? 1. Leer de la fila i-ésima del StringGrid la columna 0. Guardar dicho dato en una variable. Yo la llamé indice.
2. Teniendo ese índice puedo hacer el paso inverso: 2.1. Como en la columna 1 (j = 1) tenemos el DNI, entonces el DNI para dicha persona en el ListBox ocupa la posición k = (Indice x 4) Entonces hacemos:
2.2. Como en la columna 2 (j = 2) tenemos el Nombre, entonces el Nombre para dicha persona en el ListNox ocupa la posición k = (Indice x 4) + 1:
2.3. Como en la columna 3 (j = 3) tenemos el Apellido, entonces el Apellido para dicha persona en el ListBox ocupa la posición k = (Indice x 4) + 2:
En forma general se tiene que cualquier dato ocupa una posición k-ésima en el listBox en base a esta fórmula: k := (Indice x 4) + (j - 1) Siendo j la columna del dato que leemos. De forma inversa, podemos afirmar que: STringGrid1.Cells[PosDato,i] := ListBox1.Items[(Indice x 4) + (PosDato - 1)] Siendo PosDato la posición en que vienen: 1 -> DNI 2 -> Nombre 3 -> Apellido 4 -> Ciudad Nuevamente, aconsejo revisar el código que te paso. Haz lo siguiente, seleccona algún botón, por ejemplo el Botón "Buscar Todos". Haz doble click y verás esto:
¿Que es ese LimpiarRejilla? Para saber lo que hace, debes presionar Crtl y dar click en dicha línea. Notarás que mientras tengas presionada la tecla Crtl, el cursos cambiará a la forma de mano y que el código parece ser un link. Pues eso es: te "linkea" hacia el código. En este ejemplo al código de LimpiarRejilla. De igual manera puedes hacer con BuscarYVolcar, y cualquier código que veas. Y nuevamente, analiza en frio y notarás como funciona el código. Te aconsejo que primero lo compiles y pruebes el ejecutable, sin mirar código... después analiza el código. Está correctamente escrito con comentarios para que se entienda. Espero tus novedades. Saludos, |
|
|
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 |
|