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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.03.2009, 16:55   #1
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию DBGrid и событие onMouseWheelDown(Up)

после того, как поместил на форму BDGrid, перестали обрабатываться события onMouseWheelDown и onMouseWheelUp моей формы. Как мне снова обрабатывать движения колесика мыши?
Bayazet вне форума
Старый 04.03.2009, 18:07   #2
Лукманов Александр
работа не волк....
Форумчанин
 
Аватар для Лукманов Александр
 
Регистрация: 09.06.2008
Сообщений: 337
По умолчанию

Попробуйте в FormCreate написать:
setfocus;

или перед выполнением события:
form1.setfocus;
Цель, для которой требуются неправые средства, не есть неправая цель.

Последний раз редактировалось Лукманов Александр; 04.03.2009 в 18:10.
Лукманов Александр вне форума
Старый 04.03.2009, 18:30   #3
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

хм.. не помогает
Bayazet вне форума
Старый 04.03.2009, 18:54   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

DBGrid ни при чем. Я проверил - она никак не влияет. Ищите, какую вы внесли ошибку ранее.
mihali4 вне форума
Старый 06.03.2009, 11:30   #5
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

хм. если поставить DBGrid.Enable := false; то колесико мышки снова реагирует, а если в true, то нет.

видимо, придется рассматривать положение курсора, и если он над DBGrid'ом, ставить ему энаблтру, иначе - энейблфолс

хотя я сейчас помозговал и понял, что это не выход, т.к. в мой DBGrid могут постоянно вноситься какие-то изменения и ограничивать их положением курсора над этим гридом - неразумно.
подскажите какой-нибудь вариант, пожалуйста

Последний раз редактировалось Stilet; 06.03.2009 в 12:16.
Bayazet вне форума
Старый 06.03.2009, 12:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код в студию.
I'm learning to live...
Stilet вне форума
Старый 06.03.2009, 12:40   #7
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

код чего?.. там не самый маленький проект.. ну, могу код для юнита формы выложить..
Вложения
Тип файла: rar main.rar (2.9 Кб, 18 просмотров)
Bayazet вне форума
Старый 06.03.2009, 13:17   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Подожди, а выполнение заходит вообще в этот обработчик?, ато там у тебя If прям сначала, и в нем проверочки, которые могут не выполняться, поскольку скорее всего там 0, из-за того что событие то формы, и она не может определить положение курсора над собой, поскольку курсор находится не на ней а на контроле.

Ты это проверь и если что с помошью ScreenToClient(Mouse.Cursor) преобразуй координаты курсора, а потом уж и проверяй их
I'm learning to live...
Stilet вне форума
Старый 11.03.2009, 22:33   #9
CahekG
Пользователь
 
Регистрация: 25.02.2009
Сообщений: 28
По умолчанию

Просто фокус ввода на объекте DbGrid, а он в свою очередь сообщения от колесика мыши просто не обрабатывает.
Для Dbgrid надо создать свой компонент со свойствами OnMouseWheelUp и OnMouseWheelDown.
У DbGrid один из его потомков TCustomGrid. А у StringGriв например - TDrawGrid.
И из TCustomGrid свойства OnMouseWheelUp и OnMouseWheelDown изключили, видимо этот код со времен появления колесика у мыши в борланде никто и не переписывали, в отличии от того-же TDrawGrid.

Вот вариант, что у меня получилось . Правда я поместил её на закладку Standard (мне так удобней было протестить), там его искать после инсталяции (если не чего не менять в исходнике). Написал только названия класса, а остальное копировал из объекта TControl = class(TComponent) ...

Код:
unit TDBGridMy_unit;

interface

uses
  SysUtils, Windows, Classes, Controls, Grids, DBGrids;

type
  TDBGridMy = class(TDBGrid)
  private
    { Private declarations }
    FOnMouseWheelDown: TMouseWheelUpDownEvent;
    FOnMouseWheelUp: TMouseWheelUpDownEvent;

  protected
    { Protected declarations }
   function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;override;
   function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;override;
  public
    { Public declarations }
  published
    { Published declarations }
   property OnMouseWheelDown: TMouseWheelUpDownEvent read FOnMouseWheelDown
      write FOnMouseWheelDown;
    property OnMouseWheelUp: TMouseWheelUpDownEvent read FOnMouseWheelUp write
      FOnMouseWheelUp;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TDBGridMy]);
end;

function TDBGridMy.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := False;
  if Assigned(FOnMouseWheelDown) then
    FOnMouseWheelDown(Self, Shift, MousePos, Result);
end;

function TDBGridMy.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := False;
  if Assigned(FOnMouseWheelUp) then
    FOnMouseWheelUp(Self, Shift, MousePos, Result);
end;

end.

Последний раз редактировалось CahekG; 11.03.2009 в 23:17.
CahekG вне форума
Старый 13.04.2009, 12:43   #10
ego1st
Новичок
Джуниор
 
Регистрация: 13.04.2009
Сообщений: 1
По умолчанию

я попытался создать класс по вашему примеру. но у меня ничего не вышло. все по-прежнему. что я сделал не так?
ego1st вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие vitamin.rulez Помощь студентам 7 10.02.2009 11:46
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие OnDrawDataCell у DBGrid Yulya22 БД в Delphi 1 19.04.2008 14:44