Usando un control ComboBoxEx en Delphi 7 me doy cuenta de lo siguiente.
Supongamos que llenamos el combo con 15 elementos:
Código Delphi
[-]
for I := 1 to 15 do
ComboBoxEx1.Items.Add(Format('Item %0.2d', [i]));
El combo se ve así:
Para poder ver todos los elementos al momento de desplegar la lista, ajusto la propiedad DropDownCount a 15. El resultado es el que se espera:
.
Sin embargo, si cambio el tamaño de letra del combo a 10 (el de defecto es 8), el resultado es este:
Es decir, que al parecer, el desplegado no toma en cuenta la altura real de cada elemento.
Revisando el código del componente, veo con sorpresa esto:
Código Delphi
[-]
function TCustomComboBoxEx.GetItemHt: Integer;
begin
Result := 16;
end;
¡Una constante!
El código del método correspondiente en el combo normal es así:
Código Delphi
[-]
function TCustomComboBox.GetItemHt: Integer;
begin
if FStyle in [csOwnerDrawFixed, csOwnerDrawVariable] then
Result := FItemHeight else
Result := Perform(CB_GETITEMHEIGHT, 0, 0);
end;
Cosa bastante más razonable.
Si redefino el método de esta manera:
Código Delphi
[-]
function TComboBoxEx.GetItemHt: Integer;
begin
Result := Perform(CB_GETITEMHEIGHT, 0, 0);
end;
el resultado vuelve a ser el esperado:
// Saludos