lcl: check children handles on menu item LM_ACTIVATE message (fixes win32 part of issue )

git-svn-id: trunk@20859 -
This commit is contained in:
paul 2009-07-15 03:35:04 +00:00
parent c01c5e7c6f
commit b5301d1c72
2 changed files with 17 additions and 10 deletions

View File

@ -119,21 +119,12 @@ end;
Creates the handle ( = object).
------------------------------------------------------------------------------}
procedure TMenuItem.CreateHandle;
var
i: Integer;
begin
//DebugLn('TMenuItem.CreateHandle ',dbgsName(Self),' ',dbgs(Self));
//DebugLn('TMenuItem.CreateHandle START ',Name,':',ClassName);
if not FVisible then RaiseGDBException('');
Handle := TWSMenuItemClass(WidgetSetClass).CreateHandle(Self);
if FItems <> nil then
begin
for i := 0 to Count - 1 do
begin
if Items[i].Visible then
Items[i].HandleNeeded;
end;
end;
CheckChildrenHandles;
if Parent <> nil then
begin
@ -264,6 +255,7 @@ end;
------------------------------------------------------------------------------}
procedure TMenuItem.DoClicked(var msg);
begin
CheckChildrenHandles;
if not (csDesigning in ComponentState) then
begin
InitiateActions;
@ -274,6 +266,20 @@ begin
DesignerMenuItemClick(Self);
end;
procedure TMenuItem.CheckChildrenHandles;
var
i: Integer;
begin
if FItems <> nil then
begin
for i := 0 to Count - 1 do
begin
if Items[i].Visible then
Items[i].HandleNeeded;
end;
end;
end;
procedure TMenuItem.IntfDoSelect;
begin
Application.Hint := GetLongHint(Hint);

View File

@ -176,6 +176,7 @@ type
function GetActionLinkClass: TMenuActionLinkClass; dynamic;
function GetHandle: HMenu;
procedure DoClicked(var msg); message LM_ACTIVATE;
procedure CheckChildrenHandles;
procedure CreateHandle; virtual;
procedure DestroyHandle; virtual;
procedure Loaded; override;