"EhLib.Com"
https://forum.ehlib.com/ru/

DBGridEh STFilter перехват скролла
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=2749
Страница 1 из 1

Автор:  aford [ 27 фев 2019, 15:12 ]
Заголовок сообщения:  DBGridEh STFilter перехват скролла

В продолжение предыдущей темы, как на фильтре перехватить скролл? Стандартным способом
Код:
procedure TFrmMain.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  c: TControl;
  mp: TPoint;
begin
  ShowMessage('a');
  mp:= ScreenToClient(MousePos);
  c:= ControlAtPos(mp, False, True);
  if c <> nil then
    TProtectControl(c).DoMouseWheel(Shift, WheelDelta, mp);
end;

Не получается...

Автор:  aford [ 28 фев 2019, 12:23 ]
Заголовок сообщения:  Re: DBGridEh STFilter перехват скролла

Перехватил так:
Код:
procedure TFrmMain.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // если крутим колесиком в фильтре табл. DBGrdEhWeights
  if (Msg.message = WM_MOUSEWHEEL) and
     (DBGrdEhWeights.FilterEditMode) then
  begin
    // очищаем сообщение
    Msg.lParam:= 0;
    Msg.wParam:= 0;
  end;


Чтобы не выскакивала ошибка просто отменяю скролл, а по хорошему надо как-то заполнить значения списка FilterEdit, они прекрасно заполняются при клике на кн. выпадения списка. Пробовал разные процедуры, но все без толку:
Код:
    //1:
    DBGrdEhWeights.OnFilterGetItemsList(FrmMain);
    DBGrdEhWeights.UpdateFilterEditProps(DBGrdEhWeights.Col-1);}
    //2:
    with DBGrdEhWeights do
    begin
        F:= Columns[Col-1].STFilter;
        F.GetFieldValueList;
        Columns[Col-1].GetLookupValue;
    end;

Страница 1 из 1 Часовой пояс: UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/