PDA

Ver la Versión Completa : Altura de un Combobox


elcigarra
01-09-2005, 03:39:39
¿Hay alguna forma de cambiar la altura (Height) de un combobox sin cambiar el tipo de letra?

ormcra
01-09-2005, 10:00:57
la altura del combobox no afecta al tipo de letra. lo unico que tienes que hacer es modificar el valor Height y ya esta, el tipo de letra se tiene que conservar. pero si no se conserva por cualquier motivo, modificalo en la propiedad font del combobox.

dec
01-09-2005, 10:20:40
Hola,


(...) lo unico que tienes que hacer es modificar el valor Height (...)

No lo probaste, ¿verdad? Porque si eso fuera lo único que hay que hacer a buen seguro que elcigarra no hubiera planteado esta cuestión. Por mí podré decir que, aunque lo he intentado de varias maneras, no he conseguido hacer lo que se precisa: ignoro el porqué, porque sino lo haría saber, claro está.

jmariano
01-09-2005, 16:27:51
Creo que lo único que se puede cambiar es la altura de la lista que muestra los elementos del ComboBox pero no la altura del ComboBox en sí. Esto lo digo porque revisé por encima todos los mensajes que admite el ComboBox y ninguno tenía que ver con la altura, así que debe de ser una limitación del mismo Windows sobre este control. (Y si alguien lo descubre que diga cómo ;) )

Bye!

elcigarra
01-09-2005, 20:01:47
Digamos que como no soy un profesional acostumbro probar bastante antes de volcar la pregunta al foro cosa de evitar caer en alguna bobada (aunque a veces es inevitable :)), y la verdad he probado bastante y tampoco pude, por eso la pregunta...

Pero saben qué quiero hacer? Lo digo porque capaz que conocen otra solución mejor que vaya por otro camino: algo parecido al grid en el que está el "Object inspector" (es decir, con las filas finitas y alguna que pueda escogerse el valor de un combobox) del Delphi. Yo lo quería hacer con un stringgrid y un combobox y probé el truco (creo que era de Marcos) que me recomendaron en mi hilo anterior para poner un combobox en una celda. El tema es que (con todo respeto) si las filas del grid toman la altura del combobox queda absolutamente espantoso visualmente.

El tema es que evidentemente Windows puede dibujar un comboBox màs angosto sino quienes programaron el Delphi mismo no hubieran logrado hacer su coqueto Inspector de Objetos. Tal vez uds. tambien puedan, porque lo que es yo... (y es mi segundo intento en el año)

dec
01-09-2005, 20:26:25
Hola,

Esta búsqueda (http://www.torry.net/quicksearchd.php?String=object+inspector&Title=Yes) en Torry's Delphi Pages (http://www.torry.net/) ofrece algunos componentes y utilidades que emulan el Inspector de Objetos de Delphi.

Hay uno (es el que he mirado, pero no es el único) de nombre "MiTeC Runtime Object Inspector v.1.1 (http://www.torry.net/vcl/vcltools/objectinspectors/oi.zip)" que puede usarse para cambiar propiedades de los componentes de una determinada aplicación en tiempo de ejecución.

Es el caso que si echas un vistazo a su código fuente verás que se basa en un "TStringGrid" y algunos otros componentes (entre ellos "TComboBox") para lograr algo parecido al Inspector de Objetos de Delphi.

La verdad es que a mí me ha parecido un tanto complicado (insisto que solamente probé uno de los componentes que aparecen en la búsqueda que refiero arriba) pero tal vez pueda servirte de algo echar un vistazo.

delphi.com.ar
01-09-2005, 20:52:55
Esta búsqueda (http://www.torry.net/quicksearchd.php?String=object+inspector&Title=Yes) en Torry's Delphi Pages (http://www.torry.net/) ofrece algunos componentes y utilidades que emulan el Inspector de Objetos de Delphi.
Precisamente yo tuve el mismo inconveniente cuando desarrollé un "Inspector de Objetos", no recuerdo bien, pero creo que no pude achicar el combo de Windows. Si recuerdo que finalmente terminé haciendo uno propio, pero no se si ese fue el motivo!

Saludos!

elcigarra
02-09-2005, 04:17:37
Estuve mirando todos los componentes de Torry referidos a Comboboxes, inclusive el que mandaste. Si los ves en NINGUNO se modifica la altura del Combo, a lo más, lo tapan con lineas y le re-dibujan arriba un botoncito nuevo u poco mas colorido, pero el "alto" es el mismo.
En el caso del run-time Object Inspector, el combobox sigue siendo el mismo con el mismo height, no como el inspector de Delphi que es mucho más angosto.

Yo pregunto: ¿Qué pasa si defino una región más angosta para el control (después hay la posibilidad de dibujar arriba para mejorar el botón recortado)? Yo intenté hacerlo pero me dá un error "Control '' has no parent window" que no supe resolver. En todo caso, no estoy seguro que si la región está restringida a ese rectángulo, luego se vea el drop down que, por supuesto, va a estar por fuera.

roman
02-09-2005, 07:23:51
el combobox sigue siendo el mismo con el mismo height, no como el inspector de Delphi que es mucho más angosto.


¿A qué se refieren con esto? Haciendo una medición veo que el del inspector de objeto mide 17 pixeles de altura contra 21 pixeles del combobox. ¿Cuatro pixels es mucho?

// Saludos

elcigarra
02-09-2005, 13:04:43
4 pixels en 21 es aproximadamente el 20%. No estoy seguro en altura de un combobox, pero en mi sueldo un 20% menos es mucho :D

Mas allá de la broma, no importa si es mucho o poco, el tema es que ese combobox no es igual y de alguna forma lo hicieron.

elcigarra
02-09-2005, 13:34:37
Desde el código de una aplicación se puede hacer poniendo en el FormCreate del formulario donde está el combo:


procedure TForm1.FormCreate(Sender: TObject);
begin
// Angosto los comboboxes
SetWindowRgn(ComboBox1.Handle, CreateRectRgn(0,2,Width,Height-2), True);

y poniendo encima algún botón que oficie de DropDown Button y que además tape el botón cortado.

El tema es que el DropDown sale dos pixels separado abajo. Se podría definir la región así
SetWindowRgn(ComboBox1.Handle, CreateRectRgn(0,4,Width,Height), True);
Pero en este caso el texto no sale centrado
Yo lo subsané con la desprolijidad de definir una región de 0 pixels y desaparecerlo totalmente. Arriba con un TEdit y un botón está todo. El resto es código.

Mi idea era hacer un componente al que inicialmente le pueda definir una región:

constructor TMiComboBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FRegion := CreateRectRgn(2,2,Width-2,Height-2);
SetWindowRgn(Handle, FRegion, True);
end;


El tema que en ejecución sale el error
"Control '' has no parent window"
Alguien sabe que tengo que ponerle al componente (de tipo TComboBox) para que no me de este error?

delphi.com.ar
02-09-2005, 14:13:39
Estuve mirando todos los componentes de Torry referidos a Comboboxes, inclusive el que mandaste. Si los ves en NINGUNO se modifica la altura del Combo....
¿Cómo que ninguno en Torry?... ¿No viste ninguno de mis compoenentes TComboEditor, TCheckCombo, TDBCheckCombo, TDBComboGrid, TDBIncComboGrid de la EditSuite? (El problema es que ninguno de ellos son combos tradicionales :D )

Saludos!

elcigarra
02-09-2005, 15:05:12
Los ví, si... No me sirvió la parte donde decía: "source: none" :D
Es chiste, no los había visto porque busqué en Checklist and comboboxes, componentes individuales, no paquetes. Los bajé recién... en un rato los pruebo a ver si pueden adaptarse a la idea que busco. Gracias

Tenés idea a qué se debe el error ese del "Parent Window"?