Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Evento OnChange ComboBox no se dispara (https://www.clubdelphi.com/foros/showthread.php?t=86546)

Jose Roman 29-08-2014 17:41:25

Evento OnChange ComboBox no se dispara
 
Hola amigos,

Tengo una serie de tareas a realizar en el evento OnChange, para limpiar la selección utilizo ComboBox.ItemIndex := -1; pero al seleccionar el mismo item no se dispara el evento OnChange, solo si haga una selección de otro item distinto al anterior, que puedo hacer para solucionar este impase?

Al González 29-08-2014 18:03:53

Es lo que se espera de un evento OnChange: que se dispare sólo si lo que tiene que cambiar cambia. ;)

¿Cuál es el problema real?

ecfisa 29-08-2014 18:07:25

Hola Jose Roman.

El evento OnChange se dispara cuando el usuario modifica el texto del área de edición (Extraño comportamiento de un ComboBox).

Saludos :)

Al González 29-08-2014 18:20:54

Ah, ya vi por dónde iba la pregunta...:o

Casimiro Notevi 29-08-2014 18:21:47

Cita:

Empezado por Jose Roman (Mensaje 480527)
al seleccionar el mismo item no se dispara el evento OnChange

Menos mal :)

Jose Roman 29-08-2014 18:23:00

Entonces debo modificar el texto y después realizar el Itemindex := -1 ?

ecfisa 29-08-2014 19:01:38

Hola Jose Roman.

La verdad es que no entiendo que es lo que deseas hacer, pero si buscas capturar un cambio en el valor ItemIndex de un TComboBox, se me ocurre esto:
Código Delphi [-]
...
type
  TComboBox = class(StdCtrls.TComboBox)
  private
    procedure WndProc(var Msg: TMessage); override;
  end;

  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

...
implementation

...

procedure TComboBox.WndProc(var Msg: TMessage);
begin
  if Msg.Msg = CB_SETCURSEL then
    ShowMessage(Format('Cambio ItemIndex en %s', [Name]));
  inherited;
end;

//llamada
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.ItemIndex:= Random(ComboBox1.ItemCount);
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 18:36:33.

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