Вверх ↑
Ответов: 5227
Рейтинг: 585
#1: 2021-12-10 15:08:17 ЛС | профиль | цитата
Хочу кое что добавить.

Стал разбиратся что мои контролы GDI+ перестали работать при подключенных точках событий MouseEnter и onMouseLeave
и что я вижу в Win.pas
procedure THIWin.SetMouseEnter(Ev:THI_Event);
begin
// история костыля:
// если св-ва установлены, то появляется лишнее событие WM_PAINT на контролах, но верно работает MouseEnter
// если не установлены или сделаны иначе, то MouseEvent может приходить много раз + еще хз какие проблемы
fonMouseEnter := ev;
Control.onMouseEnter := _onMouseEnter;
end;

procedure THIWin.SetMouseLeave(Ev:THI_Event);
begin
fonMouseLeave := ev;
Control.onMouseLeave := _onMouseLeave;
end;

т.е присвоили себе события а там хоть трава не расти...

а что нельзя было проверочку добавить, может кто из компонентов уже использует эти методы?
procedure THIWin.SetMouseEnter(Ev:THI_Event);
begin
// история костыля:
// если св-ва установлены, то появляется лишнее событие WM_PAINT на контролах, но верно работает MouseEnter
// если не установлены или сделаны иначе, то MouseEvent может приходить много раз + еще хз какие проблемы
fonMouseEnter := ev;
if not Assigned(Control.onMouseEnter) then // вот так к примеру
Control.onMouseEnter := _onMouseEnter;
end;

procedure THIWin.SetMouseLeave(Ev:THI_Event);
begin
fonMouseLeave := ev;
if not Assigned(Control.onMouseLeave) then // и так
Control.onMouseLeave := _onMouseLeave;
end;
Тогда уж пусть на события в этих точках ляжет на плечи разработчика.

ну что там вызвать то одноимённые методы труда не составит
_hi_OnEvent(_event_onMouseEnter);
_hi_OnEvent(_event_OnMouseLeave);

Короче у себя поправил, всё работает. Но может кто мне другое кун-фу объяснит
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Редактировалось 1 раз(а), последний 2021-12-10 15:09:03