Ver Mensaje Individual
  #14  
Antiguo 26-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 28
Delphius Va camino a la fama
Hola kbaby... el siguiente código es un ejemplo de lo que buscas:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var indice: integer;
    i: integer;
begin
  // primero buscamos el dato. Supuesto: que siempre estamos buscando un DNI
  indice := ListBox1.Items.IndexOf(Edit5.Text);
  if indice <> -1
     then begin
             for i := 1 to 4 do  //este cuatro corresponde a la cantidad
               // de datos a mostrar. En este caso son: DNI, Nombre, Apellido,
               // Teléfono
               begin;
                 // mostrar cada dato en una celda distinta
                 // De hecho, lo mostramos en la primera fila
                 // [columna,fila]
                 StringGrid1.Cells[i,1] := ListBox1.Items[indice];
                 inc(indice);
               end;
          end
     else ShowMessage('DNI no encontrado');
end;

El código funciona, siempre que busques el DNI. Si buscas el apellido o cualquier otro dato no vas a obtener lo que deseas... Hice el supuesto de que siempre están disponibles todos los datos, de otro modo el algoritmo falla. Para hacerte una idea de porque funciona. piensa al listBox como una lista. Y cada elemento ocupa una posición.

Código:
0 - DNI
1 - Nombre
2 - Apellido
3 - Teléfono
4 - DNI
5 - Nombre
6 - Apellido
7 - Teléfono
¿Ves algo extraño? ¿No parece haber una correlación entre 0 y 4?¿Lo mismo que para 1 y 5?
Es por ello que al encontrar la posición del DNI, la copio a la posición [1,1] del stringGrid, luego, exploro las siguientes 3 posiciones y las añado a la posición [i,1]. ¿Porqué sacamos siempre el valor del Indice? Pues porque si te fijas, al final de cada bucle FOR incremento (la función inc()) la variable indice en 1. Y esto hace que con cada pasada, se obtenga el siguiente elemento del ListBox.

Inc(indice) es análogo a indice := indice + 1;
inc(indice, 2) es análogo a indice := indice + 2;

Analiza el código que te pasee y ve de que manera se adapta a lo que buscas.

Muchas de las cosas que preguntas tienen tanto de lógica como del uso del uso de las propiedades de los objetos que empleas. No temas pulsar F1 al seleccionar un objeto. Por ejemplo, si no sabes como usar el StringGrid, arrastra uno al form, seleccionalo y presiona F1. Obtendrás la ayuda.

El inglés no es pretexto, habiendo traductores on-line como off-line.

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