Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con combobox de seleccion (https://www.clubdelphi.com/foros/showthread.php?t=62123)

tebre 04-12-2008 20:39:57

Problema con combobox de seleccion
 
utilizo este codigo para llenar un combobox y funciona bien con un solo campo... ahora quiero que me aparesca en el combobox mas campos ejemplo

nombre, apellido paterno, apellido materno y un clave...
como hacer eso. ah y aprovechando coma hacer para que una ves seleccionado divida la cadena y solo obtenga el numero....

desde ya gracias

jose antonio perera baas - 033902568

Código Delphi [-]
procedure TFrmEmpleados.CmbEmpleadoEnter(Sender: TObject);
begin
//Llenado del combobox direccion
   Datos.QryEmpleado.Active:= False;
   Datos.QryEmpleado.SQL.Clear;
   Datos.QryEmpleado.SQL.Add('SELECT Nombre,Appaterno,Apmaterno');
   Datos.QryEmpleado.SQL.Add('FROM Empleado');
   Datos.QryEmpleado.SQL.Add('ORDER BY Appaterno,Apmaterno');
   Datos.QryEmpleado.Active:= True;
   Datos.QryEmpleado.First;
   While Not Datos.QryEmpleado.Eof Do Begin
    CmbEmpleado.Items.AddDatos.QryEmpleado.FieldByName ('Nombre').AsString);         
    Datos.QryEmpleado.Next;
   End;
end;

enecumene 04-12-2008 20:51:33

A ver si entiendo, ¿quieres que en el Combo salgan los datos combinados de varios campos?, me imagino que esto es lo que buscas:

Código Delphi [-]
 
CmbEmpleado.Items.Add(Datos.QryEmpleado.FieldByName ('Nombre').AsString+' '+
Datos.QryEmpleado.FieldByName ('Appaterno').AsString+' '+
Datos.QryEmpleado.FieldByName ('ApMaterno').AsString);

O Sino:

Código Delphi [-]
 
CmbEmpleado.Items.Add(Concat(Datos.QryEmpleado.FieldByName ('Nombre').AsString,' ',
Datos.QryEmpleado.FieldByName ('Appaterno').AsString,' ',
Datos.QryEmpleado.FieldByName ('ApMaterno').AsString));

Saludos.

delphi.com.ar 04-12-2008 20:54:14

Te puedo recomendar probar alguno de los combos con grillas integradas de mis componentes: Firesoft EditSuite

Saludos!

tebre 04-12-2008 21:00:11

combobox solucionado...queda duda
 
solucionado gracias por la pronta respuesta eso era lo que necesitaba..

aprovechando... como podria hacer para que cuando me seleccionen del combobox... de toda la cadena de nombre appellido paterno apellido materno

recoga nada mas el appellido paterno...

desde ya gracias........

Caro 04-12-2008 22:58:28

Cita:

Empezado por tebre (Mensaje 329679)
solucionado gracias por la pronta respuesta eso era lo que necesitaba..

aprovechando... como podria hacer para que cuando me seleccionen del combobox... de toda la cadena de nombre appellido paterno apellido materno

recoga nada mas el appellido paterno...

Hola, una forma podría ser que lo separes en un StrinList y accedas a la posición donde esta el apellido paterno.

Código Delphi [-]
  sl : TStringList;
begin
  sl := TStringList.Create;
  sl.DelimitedText := ComboBox1.Items[ComboBox1.ItemIndex];
 
  showmessage(sl[1]);

pero hay un problema que pasa si el apellido tiene dos palabras por lo menos en mi pais si he visto o que pasaría si quieres obtener el nombre y la persona tiene dos o tres nombres, hasta donde vas a tomar de lo que tines en el item, a no ser que pongas un delimitador y así te des cuenta, en ese caso también podrías obtener con las funciones Copy y Pos.

Otra forma sería que te crees objetos y a parte de añadir el texto del comboBox también añades tu objetito a cada ítem.

Código Delphi [-]
type
 TDatosPer = class
 private
  nombre,
  paterno,
  materno   : String;
end;
......................
.....................
 
var
 DatosPer : TDatosPer;
 Texto : String;
begin
 Texto := Datos.QryEmpleado.FieldByName ('Nombre').AsString+' '+
             Datos.QryEmpleado.FieldByName ('Appaterno').AsString+' '+
             Datos.QryEmpleado.FieldByName ('ApMaterno').AsString;
 
 DatosPer := TDatosPer.Create;
 With DatosPer do
   begin
     nombre := Datos.QryEmpleado.FieldByName ('Nombre').AsString;
     paterno := Datos.QryEmpleado.FieldByName ('Appaterno').AsString;
     materno := Datos.QryEmpleado.FieldByName ('Appaterno').AsString;
   end;
 ComboBox1.Items.AddObject(Texto, TObject(DatosPer));
end;

Ahora paar recuperar un valor, no importa cual, solo necesitas hacer refrencia al que necesitas.

Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 showmessage(TDatosPer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).paterno);
end;

Pero ahora yo tengo una duda, es sobre la liberación de los objetos que me he creado, alguien me puede aclarar como sería la liberación, tendría que liberar yo los objetos que me he creado :confused:.

Saluditos

wladiz2001 04-03-2018 04:51:48

Cita:

Empezado por delphi.com.ar (Mensaje 329677)
Te puedo recomendar probar alguno de los combos con grillas integradas de mis componentes: Firesoft EditSuite

Saludos!

Buenas noches, me llamo Wladimir y soy desarrollador de delphi por mas de 10 años, estoy trabajando actualmente con lazarus, y me llamo mucho la atención estos componentes sin embargo no he podido encontrar los fuentes para poder utilizarlos, mil disculpas por reabrir un hilo tan antiguo, pero podría ayudarme alguien con el mismo

Muchas Gracias


La franja horaria es GMT +2. Ahora son las 14:05:59.

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