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

View File

@ -1387,11 +1387,24 @@ end;
procedure TControl.VisibleChanged; procedure TControl.VisibleChanged;
begin 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); DoCallNotifyHandler(chtOnVisibleChanged);
end; 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; procedure TControl.AddHandler(HandlerType: TControlHandlerType;
const AMethod: TMethod; AsFirst: boolean); const AMethod: TMethod; AsFirst: boolean);
begin begin
@ -2662,8 +2675,10 @@ procedure TControl.SetEnabled(Value: Boolean);
begin begin
if FEnabled <> Value if FEnabled <> Value
then begin then begin
EnabledChanging;
FEnabled := Value; FEnabled := Value;
Perform(CM_ENABLEDCHANGED, 0, 0); Perform(CM_ENABLEDCHANGED, 0, 0);
EnabledChanged;
end; end;
end; end;
@ -4098,6 +4113,18 @@ begin
RemoveHandler(chtOnVisibleChanged,TMethod(OnVisibleChangedEvent)); RemoveHandler(chtOnVisibleChanged,TMethod(OnVisibleChangedEvent));
end; 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; procedure TControl.AddHandlerOnKeyDown(const OnKeyDownEvent: TKeyEvent;
AsFirst: boolean); AsFirst: boolean);
begin begin