Ver Mensaje Individual
  #1  
Antiguo 12-01-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
OwnerDraw en TComboBox, que permita edicion

Saludos

Estoy usando Delphi 2010. Tengo un control TComboBox en el cual implemento un evento OnDrawItem. La idea es mostrar cierta cosa cuando se despliega la lista, y otra cuando la lista esta cerrada

Este es mi codigo:

Código Delphi [-]
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  LText: string;
begin
  // el ComboBox1 tiene su propiedad Style a csOwnerDrawFixed
  if Index = -1 then
    Exit;

  LText := ComboBox1.Items[Index];
  if odComboBoxEdit in State then
    HacerAlgoConElTexto(LText);

  ComboBox1.Canvas.FillRect(Rect);
  ComboBox1.Canvas.TextOut(Rect.Left + 2, Rect.Top, LText);
end;

Esto funciona muy bien y el efecto logrado es el deseado. El problema que tengo es que al cambiar el Combo a csOwnerDrawFixed pierdo la parte de edicion. Es decir, no se permite introducir algun texto cualquiera, estoy forzado a seleccionar solo una de las opciones del combo

Y si vuelvo a la propiedad Style a csDropDown, pierdo el OwnerDraw

Hay alguna solucion? O tengo que buscar otra alternativa / componente?

Saludos y gracias
Responder Con Cita