Показать сообщение отдельно
  #2  
Старый 14.03.2018, 15:07
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
type
  TForm1 = class(TForm)
    DBGridEh1: TDBGridEh;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    OldWindowProc: TWndMethod;
    procedure NewWindowProc(var Msg: TMessage);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.NewWindowProc(var Msg: TMessage);
var
  p: TPoint;
begin
  if Msg.Msg = WM_MOUSEWHEEL then
  begin
    p := Point(TWMMouseWheel(Msg).XPos, TWMMouseWheel(Msg).YPos);
    if ControlAtPos(ScreenToClient(p), False, True) = DBGridEh1 then
      OldWindowProc(Msg)
    else
      Msg.Result := 0;
  end
  else
    OldWindowProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWindowProc := DBGridEh1.WindowProc;
  DBGridEh1.WindowProc := NewWindowProc;
end;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием