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
indice := ListBox1.Items.IndexOf(Edit5.Text);
if indice <> -1
then begin
for i := 1 to 4 do begin;
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,