Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Altura de un Combobox (https://www.clubdelphi.com/foros/showthread.php?t=24747)

elcigarra 01-09-2005 03:39:39

Altura de un Combobox
 
¿Hay alguna forma de cambiar la altura (Height) de un combobox sin cambiar el tipo de letra?

ormcra 01-09-2005 10:00:57

creo que siip....
 
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,

Cita:

Empezado por ormcra
(...) 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

ajustemos la pregunta
 
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 en Torry's Delphi Pages 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" 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

Cita:

Empezado por dec
Esta búsqueda en Torry's Delphi Pages 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

Cita:

Empezado por elcigarra
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:

Código:


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í
Código:

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:
Código:

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

Cita:

Empezado por elcigarra
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"?


La franja horaria es GMT +2. Ahora son las 00:09:01.

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