Bueno, la manera más fácil es redefinir la clase TComboBoxEx para que intercepte el mensaje CMMouseEnter.
Algo así:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type TComboBoxEx = class(ComCtrls.TComboBoxEx)
private
procedure CMMouseEnter(var msg: TMessage) ; message CM_MOUSEENTER;
end;
type
TForm1 = class(TForm)
cbb1: TComboBoxEx;
private
[...]
procedure TComboBoxEx.CMMouseEnter(var msg: TMessage);
begin
DroppedDown:= True;
end;
Al declarar una clase que se llama igual que una que ya existe, se "engaña" a Delphi para que instancie tu clase en vez de la original... Por eso hay que declararla antes de la declaración de la Form1.
Espero te sirva. Saludongos.