Стал разбиратся что мои контролы 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);
Короче у себя поправил, всё работает. Но может кто мне другое кун-фу объяснит