PDA

Ver la Versión Completa : OwnerDraw en TComboBox, que permita edicion


AgustinOrtu
12-01-2016, 00:09:16
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:


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

AgustinOrtu
28-01-2016, 01:26:12
Le doy un up, no por impaciente, solo porque veo que ya varios volvieron de las vacaciones (www.clubdelphi.com/foros/member.php?u=7718), de esos que seguro tienen una solucion :D

roman
28-01-2016, 16:57:28
Anda ecfisa. Ponte a trabajar :p

LineComment Saludos