Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 08:25   #11
xexxex
Пользователь
 
Регистрация: 31.07.2010
Сообщений: 52
По умолчанию

Победил я этот комбобокс всетаки.
Кому интересно, выкладываю код.
Код:
type
  TComboBox = class(StdCtrls.TCombobox)
    procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; ComboProc: Pointer); override;
    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
  end;


  TForm1 = class(TForm)
    ComboBox1: TComboBox;
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}


{ TComboBox }

procedure TComboBox.CNCommand(var Message: TWMCommand);
var Info: TComboBoxInfo;
begin
  case Message.NotifyCode of
    CBN_DROPDOWN:
      begin
        Info.cbSize := SizeOf(Info);
        FListHandle := 0;
        if GetComboBoxInfo( Self.Handle,  Info) then
          if Info.hwndList <> 0 then begin
            FListHandle := Info.hwndList;
            FDefListProc := Pointer(GetWindowLong(FListHandle, GWL_WNDPROC));
            SetWindowLong(FListHandle, GWL_WNDPROC, Longint(FListInstance));
          end;
      end;
    CBN_CLOSEUP:
      if FListHandle <> 0 then
        SetWindowLong(FListHandle, GWL_WNDPROC, Longint(FDefListProc));
  end;
   inherited;
end;

procedure TComboBox.ComboWndProc(var Message: TMessage; ComboWnd: HWnd; ComboProc: Pointer);
begin
  if ComboWnd = FListHandle then
    with Message do
      if Msg = WM_WINDOWPOSCHANGING  then
        with PWindowPos(lParam)^ do
            // просто скрываем, а можно изменить размер\положение списка
          flags := Flags or SWP_HIDEWINDOW;
  inherited;
end;

Последний раз редактировалось xexxex; 04.01.2011 в 08:27.
xexxex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выпадающий список ComboBox pu4koff Win Api 29 27.02.2014 17:23
Как убрать информер aleksei-lip Безопасность, Шифрование 1 22.12.2008 13:08
Как убрать сообщение об ошибке? AngelOfDeath Работа с сетью в Delphi 2 01.05.2008 11:44
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45
Как убрать компонент SeRhy Помощь студентам 2 29.10.2007 17:29