LCL: add EnabledChanging and EnabledChanged events for TControl. Issue #20300, patch from Silvio Clécio

git-svn-id: trunk@32465 -
This commit is contained in:
juha 2011-09-23 08:30:48 +00:00
parent 4d3cc5e247
commit ea9e588d42
2 changed files with 36 additions and 2 deletions

View File

@ -874,6 +874,8 @@ type
chtOnChangeBounds,
chtOnVisibleChanging,
chtOnVisibleChanged,
chtOnEnabledChanging,
chtOnEnabledChanged,
chtOnKeyDown
);
@ -1230,6 +1232,8 @@ type
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; virtual;
procedure VisibleChanging; virtual;
procedure VisibleChanged; virtual;
procedure EnabledChanging; virtual;
procedure EnabledChanged; virtual;
procedure AddHandler(HandlerType: TControlHandlerType;
const AMethod: TMethod; AsFirst: boolean = false);
procedure RemoveHandler(HandlerType: TControlHandlerType;
@ -1398,6 +1402,9 @@ type
procedure AddHandlerOnVisibleChanged(const OnVisibleChangedEvent: TNotifyEvent;
AsFirst: boolean = false);
procedure RemoveHandlerOnVisibleChanged(const OnVisibleChangedEvent: TNotifyEvent);
procedure AddHandlerOnEnabledChanged(const OnEnabledChangedEvent: TNotifyEvent;
AsFirst: boolean = false);
procedure RemoveHandlerOnEnableChanging(const OnEnableChangingEvent: TNotifyEvent);
procedure AddHandlerOnKeyDown(const OnKeyDownEvent: TKeyEvent;
AsFirst: boolean = false);
procedure RemoveHandlerOnKeyDown(const OnKeyDownEvent: TKeyEvent);

View File

@ -1387,11 +1387,24 @@ end;
procedure TControl.VisibleChanged;
begin
{ TODO -cdocking : For docked controls, the docking manager must receive a notification!
}
{ TODO -cdocking : For docked controls, the docking manager must receive a notification! }
DoCallNotifyHandler(chtOnVisibleChanged);
end;
{------------------------------------------------------------------------------
procedure TControl.EnabledChanging;
------------------------------------------------------------------------------}
procedure TControl.EnabledChanging;
begin
DoCallNotifyHandler(chtOnEnabledChanging);
end;
procedure TControl.EnabledChanged;
begin
{ TODO -cdocking : For docked controls, the docking manager must receive a notification! }
DoCallNotifyHandler(chtOnEnabledChanged);
end;
procedure TControl.AddHandler(HandlerType: TControlHandlerType;
const AMethod: TMethod; AsFirst: boolean);
begin
@ -2662,8 +2675,10 @@ procedure TControl.SetEnabled(Value: Boolean);
begin
if FEnabled <> Value
then begin
EnabledChanging;
FEnabled := Value;
Perform(CM_ENABLEDCHANGED, 0, 0);
EnabledChanged;
end;
end;
@ -4098,6 +4113,18 @@ begin
RemoveHandler(chtOnVisibleChanged,TMethod(OnVisibleChangedEvent));
end;
procedure TControl.AddHandlerOnEnabledChanged(
const OnEnabledChangedEvent: TNotifyEvent; AsFirst: boolean);
begin
AddHandler(chtOnEnabledChanged,TMethod(OnEnabledChangedEvent),AsFirst);
end;
procedure TControl.RemoveHandlerOnEnableChanging(
const OnEnableChangingEvent: TNotifyEvent);
begin
RemoveHandler(chtOnEnabledChanged,TMethod(OnEnableChangingEvent));
end;
procedure TControl.AddHandlerOnKeyDown(const OnKeyDownEvent: TKeyEvent;
AsFirst: boolean);
begin