Supongamos que tenemos que dar a elegir a nuestros usuarios una serie de personas cargadas en un ComboBox pero también queremos tener disponible una serie de datos de esas personas como domicilio, DNI, estado civil, etc, etc.
Para ello hay una serie de truquillos súper fáciles, con un ComboBox y un array vamos a tenes todos los datos disponibles para cuando el usuario lo quiera.
En primer lugar vamos a crear un formulario y en él agregaremos el ComboBox, y los edit para el Nombre, domicilio, DNI, estado civil y algún otro dato que querréis agregarle. Lo mostramos en la imagen siguiente:
A continuación vamos a crear el registro Personas con los siguientes campos:
type
Personas = record
Nombre: string;
Apellido: string;
Domicilio: string;
DNI: string;
EstCivil: string;
end;
Luego, deberemos crear un array con el nombre vPersonas de tipo Personas cuyo ámbito sea todo el formulario, para ello lo declaramos antes de la implementation, junto a la declaración del formulario.
var
Form1: TForm1;
vPersonas: array of Personas;
implementation
{$R *.dfm}
Cargar un ComboBox con datos desde un array
Procedemos con la carga de datos. Para este ejemplo generamos los datos en el evento OnCreate del formulario, quedando el código de esta manera:
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
// Seteamos el largo del array en 3
SetLength(vPersonas, 3);
// Cargamos los datos en el array
vPersonas[0].Nombre := 'Juan';
vPersonas[0].Apellido := 'Perez';
vPersonas[0].Domicilio := 'Av. Colón 6845';
vPersonas[0].DNI := '01.234.567';
vPersonas[0].EstCivil := 'Soltero';
vPersonas[1].Nombre := 'Luis';
vPersonas[1].Apellido := 'Garcia';
vPersonas[1].Domicilio := 'San Martin 7854';
vPersonas[1].DNI := '99.123.456';
vPersonas[1].EstCivil := 'Casado';
vPersonas[2].Nombre := 'Roberto';
vPersonas[2].Apellido := 'Toya';
vPersonas[2].Domicilio := 'Rivadavia 452';
vPersonas[2].DNI := '12.345.678';
vPersonas[2].EstCivil := 'Divorciado';
// Vaciamos el ComboBox
ComboBox1.Items.Clear;
// Cargamos los datos del array en el Combobox
// concatenando el Apellido con el Nombre
for I := 0 to High(vPersonas) do
ComboBox1.Items.Add(vPersonas[I].Apellido + ' ' + vPersonas[I].Nombre);
end;
Paso a seguir, en el evento OnChange del componente ComboBox generamos el código para cuando el usuario elija el items, se carguen sus datos en los edit, quedando de la siguiente manera:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
// Cargamos los datos en los Edit según el items elegido por el usuario
edtNombre.Text := vPersonas[ComboBox1.ItemIndex].Apellido + ' ' + vPersonas[ComboBox1.ItemIndex].Apellido;
edtDomicilio.Text := vPersonas[ComboBox1.ItemIndex].Domicilio;
edtDNI.Text := vPersonas[ComboBox1.ItemIndex].DNI;
edtEstadoCivil.Text := vPersonas[ComboBox1.ItemIndex].EstCivil;
end;
Ya tenemos listo nuestro ejemplo de como cargar items a un ComboBox y tener a disposición una gran cantidad de datos al instante.