Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. type
  2. TControlAccess = class(TControl)
  3. end;
  4.  
  5. procedure TFormMain.FormCreate(Sender: TObject);
  6. var
  7. I: Integer;
  8. begin
  9. for I := 0 to ComponentCount - 1 do
  10. TControlAccess(Components[I]).OnMouseEnter := CustomGenericMouseEnter;
  11. end;
  12.  
  13. uses
  14. ..., TypInfo;
  15.  
  16. procedure TFormMain.FormCreate(Sender: TObject);
  17. var
  18. I: Integer;
  19. Comp: TComponent;
  20. Prop: PPropInfo;
  21. M: TMethod;
  22. begin
  23. TNotifyEvent(M) := CustomGenericMouseEnter;
  24. for I := 0 to ComponentCount - 1 do
  25. begin
  26. Comp := Components[I];
  27. Prop := GetPropInfo(Comp, 'OnMouseEnter', [tkMethod]);
  28. if Prop <> nil then
  29. SetMethodProp(Comp, Prop, M);
  30. end;
  31. end;
  32.  
  33. uses
  34. ..., System.Rtti;
  35.  
  36. procedure TFormMain.FormCreate(Sender: TObject);
  37. var
  38. I: Integer;
  39. Ctx: TRttiContext;
  40. Comp: TComponent;
  41. Prop: TRttiProperty;
  42. V: TValue;
  43. begin
  44. V := TValue.From<TNotifyEvent>(CustomGenericMouseEnter);
  45. for I := 0 to ComponentCount - 1 do
  46. begin
  47. Comp := Components[I];
  48. Ctx.GetType(Comp.ClassType).GetProperty('OnMouseEnter');
  49. if (Prop <> nil) and (Prop.Visibility in [TMemberVisibility.mvPublic, TMemberVisibility.mvPublished]) then
  50. Prop.SetValue(Comp, V);
  51. end;
  52. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement