Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ayuda TDBLookupListBox (https://www.clubdelphi.com/foros/showthread.php?t=73516)

mizzard 27-04-2011 23:33:58

Ayuda TDBLookupListBox
 
Hola, tengo dos dudas sobre este componente.

La primera es como cambiar el ancho de columnas mediante código o mediante las propiedades cuando selecciono el componente.

La segunda es como en tiempo de ejecución cambiar el valor de 'ListSource', ya que cuando lo pongo en código me dice TDataSource * y no se como vincularlo al dataSource que deseo, sin embargo si lo selecciono por propiedades cuando hago clic en el icono no hay problema.

El motivo es cambiar el contenido en funcion de la opcion seleccionada del un radioGroup.

Muchas gracias y un saludo!

mizzard 28-04-2011 00:02:32

Y para mostar el nombre de las columnas?

oscarac 28-04-2011 00:12:49

mmmm
creo que para el ancho de la columna (lo que se muestra) usas la propiedad

width

lo segundo no lo entendi
usas el ListSource ? o DataSource

mizzard 28-04-2011 00:17:36

Hola, con width no cambiamos el ancho de la lista completa?

Pues uso ListSource porque es la que me funciona, que diferencia hay con DataSource?

Se puede mostrar el nombre personalizado de las columnas?

Gracias, un saludo!

ecfisa 28-04-2011 01:27:27

Hola mizzard.

Asignar DataSource a un DBLookupComboBox en runtime:
Código:

  DBLookupComboBox1->ListSource = DataSource;
  DBLookupComboBox1->ListField = "CAMPO_A_MOSTRAR";
  DBLookupComboBox1->KeyField = "CAMPO_CLAVE";

En cuanto a el ancho de las columnas no termino de entenderte... ¿ A que te referis con 'columnas' ?

Saludos.

ecfisa 28-04-2011 01:39:59

Hola de nuevo.

No ví tu último post hasta después de poner el mío. Creo que estás confundido con el funcionamiento del DBLookupComboBox...

La cosa es así:

ListSource: DataSource que apunta al DataSet1 donde reside lista de campos que mostrará el Combo.
ListField: Campo del DataSet1 que se mostrará en el combo.
KeyField: Campo clave del DataSet1 a listar.

DataSource: DataSource que apunta al DataSet2 donde reside el campo Lookkup.
DataField: Campo Lookup residente en el DataSet2.

También es cierto que se puede mostrar más de un campo separado por ';' por ejemplo
Código:

  DBLookupComboBox1->ListField = "CAMPO_1;CAMPO_2";
Pero realmente desconozco si se puede cambiar el ancho de presentación de estos.

DataSource y DataField pueden estar vacíos. En ese caso el DBLookupComboBox sólo mostrará la lista sin alterar ningún campo de otra
tabla.

Un saludo.

mizzard 28-04-2011 01:49:49

Hola, me parece q no estoy usando el componente correcto.
Lo q quiero es mostrar los campos de un query, indicando el nombre de cada columna de la tabla (para el tema del ancho seria el ancho del listfield) y poder cambiar el query a mostrar en runtime.
Q componente deberia usar?
Muxas gracias y un saludo

ecfisa 28-04-2011 01:54:04

Hola.
Cita:

Lo q quiero es mostrar los campos de un query, indicando el nombre de cada columna de la tabla
Creo que el TDBGrid debería funcionarte perfectamente.

Saludos.

mizzard 28-04-2011 09:35:29

Hola, gracias por la respuesta, esta noche lo probaré al llegar a casa (estoy en España, :P)

Ya comento conclusiones, un saludo!

mizzard 28-04-2011 22:43:21

Hola, al final puse un DBGrid y todo va perfecto, lo único es que no me aclaro para que cuando salga la información de la tabla, se ajusten las columnas y que no salgan tan anchas...

Alguna idea?


Tb necesitaria, coger ciertos campos que en el query si que los contemplo pero que no me gustaría mostrar en la tabla, eso se puede hacer? como?

La idea es cuando se hace clic sobre una fila, recoger los campos ocultos y operar con ellos


Muchas gracias!

ecfisa 29-04-2011 02:36:27

Hola mizzard.

Cita:

se ajusten las columnas y que no salgan tan anchas
Para ajustar el ancho de la columna, tenés la propiedad Width de TColumn.
Código:

  DBGrid->Columns->Items[i]->Width = ...
Un ejemplo de uso:
Código:

for(int i=0; i < DBGrid1->Columns->Count; i++)
  DBGrid1->Columns->Items[i]->Width = DBGrid1->Columns->Items[i]->Field->DisplayWidth *
    DBGrid1->Canvas->TextWidth("0");

Cita:

coger ciertos campos que en el query si que los contemplo pero que no me gustaría mostrar en la tabla, eso se puede hacer?
Hacés doble click sobre el DBGrid y accedes al editor de columnas, allí agregas las columnas que queres que sean mostradas.

Un saludo

mizzard 02-05-2011 23:13:59

Muchísimas gracias por la respuesta, ya está todo solucionado :D

Perdona por tardar en contestar, he estado muy liado y apenas he tenido tiempo para retomar el asunto.

Un saludo!


La franja horaria es GMT +2. Ahora son las 16:03:09.

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