TComboBox (csDropDownList und csDropDown)
-
hi,
ich habe mir eine neue komponente von TComboBox abgeleitet und wollte nun auf das ändern der auswahl reagieren und zwar bevor diese gemacht wird um das ändern zu verhindern (OnBeforeChange)!
problem ist, dass CBN_SELCHANGE für eine ComboBox mit Style csDropDown korrekt gesendet wird, also bevor die änderung eintritt in der dropdownliste, aber für eine box mit dem style csDropDownList komischer weise nicht! da erfolgt die message erst nach der auswahl eines anderen items.
auszug aus stdctrls.pas für die message CBN_SELCHANGE. dort wird der text zuerst gesetzt und dann erst OnClick und OnChange aufgerufen.
// ... CBN_SELCHANGE: begin Text := Items[ItemIndex]; Click; Change; end; // ...
ich kann auch scheinbar die message CBN_SELCHANGE nicht abfangen und verändern. ich fange die message ab, aber die änderung passiert in der csdropdownlist-variante trotzdem.
einzige möglichkeit die ich bisher sehe, ist es den index zu merken und im onclick oder onchange den itemindex zurück zusetzen, wenn der wechsel unterbunden werden soll.
habt ihr noch ne idee dazu?