Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Angel.Matilla Ver Mensaje
porque los combos son más grandes que los TEdit que hay en el resto del formulario.
Por otro lado, ¿cómo es posible esto? Es decir, por defecto los combos y los edit son del mismo tamaño (altura) que está dado por el tamaño de la fuente de caracteres. Si cambias la fuente del combo a que sea igual a la que usas en los edit, se verían similares ¿no?

LineComment Saludos
Responder Con Cita
  #2  
Antiguo 15-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Usando las ideas de roman y ecfisa

No he cambiado ninguna propiedad en tiempo de diseño, todo lo hago en ejecucion

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  ComboBox1.Style := TComboBoxStyle.csOwnerDrawFixed;
  ComboBox1.OnDrawItem := ComboBox1DrawItem;
  ComboBox1.Font.Size := 14;
  ComboBox1.Canvas.Font.Size := 14;
  ComboBox1.ItemHeight := ComboBox1.Canvas.TextHeight('|') + 2;
  // cargo el combo con la lista de fuentes del sistema para ver como queda
  ComboBox1.Items := Screen.Fonts;
  ComboBox1.ItemIndex := 0;
end;

procedure TForm2.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  Target: TComboBox absolute Control;
begin
  Target.Canvas.FillRect(Rect);
  if (Index >= 0) and (Index < Target.Items.Count) then
  begin
    if ([odComboBoxEdit, odSelected] * State = [odComboBoxEdit, odSelected]) then
      Target.Canvas.Font.Color := clHighlightText;

    Target.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Target.Items[Index]);
  end;
end;

// lo que sigue es el codigo de los botones
procedure TForm2.btnIncreaseClick(Sender: TObject);
begin
  ComboBox1.Font.Size := ComboBox1.Font.Size + 1;
  ComboBox1.Canvas.Font.Size := ComboBox1.Canvas.Font.Size + 1;
  ComboBox1.Height := ComboBox1.Height - 1;
  ComboBox1.ItemHeight := ComboBox1.Canvas.TextHeight('|') + 2;
end;

procedure TForm2.btnReduceClick(Sender: TObject);
begin
  ComboBox1.Font.Size := ComboBox1.Font.Size - 1;
  ComboBox1.Canvas.Font.Size := ComboBox1.Canvas.Font.Size - 1;
  ComboBox1.Height := ComboBox1.Height + 1;
  ComboBox1.ItemHeight := ComboBox1.Canvas.TextHeight('|') + 2;
end;



Edito: Probando me estoy dando cuenta de que el evento OnDrawItem no es estrictamente necesario:

Cita:
If an OnDrawItem event handler is not provided, the combo box fills the Rect parameter with the current brush and writes the text value of the item specified by the Index parameter.

Última edición por AgustinOrtu fecha: 15-02-2017 a las 23:29:36.
Responder Con Cita
  #3  
Antiguo 16-02-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Gracias por vuestras respuestas. Me ha sido útiles pero al final me dieron una solución que creo más sencilla: Poner en el constructor del formulario
Código:
SendMessage(ComboBox1->Handle, CB_SETITEMHEIGHT, -1, <altura en píxeles>);
Responder Con Cita
  #4  
Antiguo 16-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Angel.Matilla Ver Mensaje
Gracias por vuestras respuestas. Me ha sido útiles pero al final me dieron una solución que creo más sencilla: Poner en el constructor del formulario
Código:
SendMessage(ComboBox1->Handle, CB_SETITEMHEIGHT, -1, <altura en píxeles>);
Pues sí que es sencilla. Pero más sencilla es cambiar la propiedad ItemHeight, tal como te habíamos dicho

LineComment Saludos
Responder Con Cita
  #5  
Antiguo 16-02-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pues sí que es sencilla. Pero más sencilla es cambiar la propiedad ItemHeight, tal como te habíamos dicho
El probela de esta solcuión es que los elementos pueden llegara a amontonarse al desplegar el combo.
Responder Con Cita
  #6  
Antiguo 16-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y de la otra forma, ¿cómo queda? ¿Puedes poner una imagen?

LineComment Saludos
Responder Con Cita
  #7  
Antiguo 16-02-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Y de la otra forma, ¿cómo queda? ¿Puedes poner una imagen?
Pues lo cierto es que la diferencia es menor de lo que me había parecido. Probaré porque tal vez sea mejor solución.
Responder Con Cita
  #8  
Antiguo 16-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por AgustinOrtu Ver Mensaje
Edito: Probando me estoy dando cuenta de que el evento OnDrawItem no es estrictamente necesario:
Así es, pero tal como comenté en el mensaje, el texto no queda centrado verticalmente

LineComment Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aspecto de un trackbar davidj Varios 2 21-10-2007 16:34:21
boton con aspecto de link halizia HTML, Javascript y otros 28 25-04-2007 19:51:10
Aspecto XP trabuc Varios 2 01-12-2004 15:02:51
Aspecto del formulario sur-se OOP 0 27-09-2004 11:39:46
Formulario con aspecto XP fjolivares Varios 5 09-01-2004 14:55:09


La franja horaria es GMT +2. Ahora son las 16:51:54.


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
Copyright 1996-2007 Club Delphi