Mouse + FastReport

отредактировано 17:28 Раздел: FastReport 3.0
Здравствуйте.
У меня к Вам следующий вопрос:
Возможна ли обработка событий мыши в собственном окне просмотра?
Делаю следующим образом, на форму кидаю объект TfrxReport и TfrxPreview. В результате могу обрабатывать только сообщение OnMouseOverObject, т.е. ни координат курсора ни нажатие кнопок я не получаю. Переопределяю оконную процедуру класса TfrxPreview, в результате тоже ничего, сообщения от мыши приходят только на сплитере Outline.
Мне нужно что бы я получал сообщения на события мыши, от каждого объекта в отчете, т.е. от каждого TfrxView.

P.S. С++ Builder.

Комментарии

  • отредактировано 17:28
    Вам нужно подменить оконную процедуру у TfrxPreviewWorkspace, но у TfrxPreview переменная FWorkspace закрыта.
  • отредактировано 17:28
    Таким образом получается, что никак?
    Непонятно почему разработчики так сделали. Ведь TfrxPreview существует специально для собственных нужд программиста, какой в нем смысл, если в него невозможно ничего добавить.
  • отредактировано July 2006
    Можно, т.к. это дочерние окно TfrxPreview, указатель на TfrxPreviewWorkspace будет в списке дочерних окон.
    Вот примерный код:
    TfrxPreviewWorkspace * WorkSpace;
    for(int i = 0;i < frxPreview1->ControlCount;i++)
    if(WorkSpace = dynamic_cast <TfrxPreviewWorkspace *> (frxPreview1->Controls[i]))
    {
    OLDWNDPROC = SetWindowLong(WorkSpace->Handle,GWL_WNDPROC,NEWWNDPROC)
    }
    
  • отредактировано 17:28
    Огромное спасибо, все получилось.
  • Oleg KOleg K Хабаровск
    отредактировано 17:28
    написал:
    Можно, т.к. это дочерние окно TfrxPreview, указатель на TfrxPreviewWorkspace будет в списке дочерних окон.
    Вот примерный код:
    TfrxPreviewWorkspace * WorkSpace;
    for(int i = 0;i < frxPreview1->ControlCount;i++)
    if(WorkSpace = dynamic_cast <TfrxPreviewWorkspace *> (frxPreview1->Controls[i]))
    {
    OLDWNDPROC = SetWindowLong(WorkSpace->Handle,GWL_WNDPROC,NEWWNDPROC)
    }
    
    А на Delphi перевести может кто? и куда конкретно подставить ;) ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.