Ir al contenido


Foto

[RESUELTO] Evento click DBLoopUpComboBox


  • Por favor identifícate para responder
16 respuestas en este tema

#1 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 18 agosto 2010 - 03:47

Hola foro,

Anteriormente solo programaba los eventos de un ComboBox mediante codigo, ahora estoy utilizando un DbLooUpComboBox, pero al cargar el Form se muestra vacio,
y quiero que se muestre el primer valor, también, cuando hago click y selecciono un ítem, este valor no se queda en el combo, solo haciéndolo con el teclado.

?Como deberia programar el evento OnClick?

Saludos
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 18 agosto 2010 - 04:19

Hola. Este componente está enlazado a datos, así que te mostrará el valor que tenga el registro activo. Por lo que si quieres que se muestre el primer valor de la lista, tienes que inicializar el registro con ese valor.
  • 0

#3 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 18 agosto 2010 - 04:30

Gracias por responder,
en el evento OnCreate del Form:

DbLoUpCbRol.ListFieldIndex:=0;  //o igual a 1

pero no muestra el primer valor,



  • 0

#4 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 18 agosto 2010 - 05:27

En mi caso, cuando se que por default debe ir un valor que corresponde a otra tabla, lo asigno en el evento onNewRecord, y esto funciona muy bien para cuando utilizo un TDBcombobox o TBRadioGroup.



delphi
  1. procedure TDataModule.tbMiTablaNewRecord(DataSet: TDataSet);
  2. begin
  3.   // Asigno el valor por default de la tabla a la que hago referencia
  4.   tbMiTablaNombreDelCampo.Value := 1;
  5. end;



Saludos!
  • 0

#5 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 18 agosto 2010 - 06:07

:undecided: Creo que lo que me recomiendas no aplica a mi caso, el asunto
es que al mostrarse el Form, los DbLookUpComboBox en la propiedad Text, se muestran vacios, y solo cambian si me posiciono en ellos y navego con las teclas, y si selecciono un ítem por medio del mouse, no queda seleccionado ningun registro.

Saludos
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 agosto 2010 - 06:44

Lo que debes hacer es asignar en la propiedad KeyValue el campo que asignaste en el KeyField del dblookupcombobox.

Algo así :



delphi
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.   Table1.Open;
  4.   DBLookupComboBox1.KeyValue := Table1.FieldByName('AREA').Value;
  5. end;



Salud OS
  • 0

#7 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 18 agosto 2010 - 07:09

Gracias por responder,
en el evento OnCreate del Form:

DbLoUpCbRol.ListFieldIndex:=0;  //o igual a 1

pero no muestra el primer valor,


Es que esto no se hace así. Este es un DataControl, te está mostrando el contenido de un campo.

Así que cuando abres un formulario no es que no se muestre ningún valor, es que se muestra el valor que tiene ese campo. Y si el campo estuviese en blanco, el dblookupcombobox no puede ni debe mostrar ningún valor.

Si quieres que se muestre algún valor, se lo tienes que asignar al campo al que está enlazado.
  • 0

#8 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 18 agosto 2010 - 08:23

Correcto,

los enlaces y las propiedades ListSource, KeyValue,etc, estan correctas,
incluso los registros de la tabla asignada se muestran en el componente,
quizas no me explico bien, pero a lo que llego es el por que al cargarse el Form,
no se muestra el primer registro en todo caso, y también cuando selecciono un ítem
con el mouse, este registro no se queda como, sino que se muestra vacio.


Saludos
  • 0

#9 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 19 agosto 2010 - 06:45

Saludos.

¿jdepaz puedes mostrarnos tu código para ver la configuración?

No necesariamente tiene que ser el que va producción, puedes agarrar un form nuevo y subirlo.
  • 0

#10 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 19 agosto 2010 - 11:23

hola buen día,

Realice lo siguiente, en el vento OnActivate del Form:



delphi
  1. dbLoUpCbRol.KeyValue:=LogicaNegocio.DataModule2.SQL_Tbl_rol.FieldByName('ID_ROL').AsInteger;
  2. dbLoUpCbUsuarios.KeyValue:=LogicaNegocio.DataModule2.SQL_Tbl_usuario.FieldByName('ID_USUARIO').AsInteger;



y listo, ahora cuando el Form se muestra, por default ya se muestra el primer registro, ahora bien, con respecto a seleccionar un ítem con el mouse, (evento click), el ítem no cambia, solo cambia si navego con las flechas de direccionamiento.

Creo que debo programar el evento OnClick de los DbLookUpComboBox,

Saludos
  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 19 agosto 2010 - 11:24

Te refieres a la rueda del ratón dentro del combo?.
  • 0

#12 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 19 agosto 2010 - 11:28

me refiero a las flechas del teclado,


  • 0

#13 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 19 agosto 2010 - 01:13

Saludos.

El código que nos muestra en el evento OnActivate del Form te recomiendo encarecidamente que lo pongas en el OnCreate o OnShow.

El motivo es que si haces aplicaciones MDI, y tienes varios formularios abiertos entre ellos el que nos muestra, entonces el mismo pierde el foco (por cambiar entre pantalla) cuando vuelva a recuperar el foco se disparara el evento del Activate ocasionandote esto "perdida de data" si seleccionaste algún registro distinto al valor que asignas.
  • 0

#14 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 19 agosto 2010 - 01:26

Gracias por los consejos
  • 0

#15 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 20 agosto 2010 - 03:11

Ya casi tirando la toalla,, :cry:


Podria ser un bug, pero bueno

Esta aplicación la estoy haciendo en la versión 2010,
y acabo de probar en la versión 7, utilizando los componentes
ZeosLib y me funciona correctamente  :shocked:.

Podria ser un problema con la libreria de devExpress para Firebird 2.1.x?



  • 0

#16 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 04 septiembre 2010 - 04:30

Hola,

Ahora acabo de instalar Delphi XE, y bueno, probe este proyecto del uso del DbLookupComboBox, y funciona a la perfección, al final no se que pasa que no me funciona con la versión Delphi 2010.

Por favor ponerlo como RESUELTO.

Saludos


PD: estare probando esta versión, que hasta el momento tengo 31 días para hacerlo.

  • 0

#17 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 septiembre 2010 - 04:33

Hola,

Ahora acabo de instalar Delphi XE, y bueno, probe este proyecto del uso del DbLookupComboBox, y funciona a la perfección, al final no se que pasa que no me funciona con la versión Delphi 2010.

Por favor ponerlo como RESUELTO.

Saludos


PD: estare probando esta versión, que hasta el momento tengo 31 días para hacerlo.


Hola jdepaz

Tú mismo puedes cambiar el estado del hilo, ve al primer mensaje y editalo, selecciona el prefijo [RESUELTO] y guardas los cambios.

Por otro lado, aunque ya resolviste el problema con la nueva versión de Delphi, sería interesante corregirlo en la versión 2010 ;)

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.