procedure TMainForm.Image1(Sender: TObject);
var
X, Y: Integer;
P: TPoint;
begin
P.X:= pn_StatusBar.BoundsRect.Left + pn_MainView_LeftSide.Width;
P.Y:= pn_StatusBar.BoundsRect.Top;
Windows.ClientToScreen(Panel1.Handle, P);
X:= P.X;
Y:= P.Y; Y:= Y - GetPopMenuHeight(Self.Handle, PopupMenu_StartMenu) - 6;
PopupMenu_StartMenu.Popup(X, Y);
end;//获取popupmenu的高度。
function GetPopMenuHeight(Handle: THandle; PopupMenu: TPopupMenu): Integer;
var
i, sHeight: Integer;
vRect: TRect;
begin
sHeight:= 0;
for i:= 0 to PopupMenu.Items.Count - 1 do
begin
GetMenuItemRect(Handle, PopupMenu.Handle, PopupMenu.Items[i].MenuIndex, vRect);
sHeight:= sHeight + (vRect.Bottom - vRect.Top{每个菜单项的高度});
end;
result:= sHeight;
end;有2个问题想请教下。
现在有个问题是,我第一次点击Image1,弹出PopupMenu,位置不对,跟踪后是发现 GetPopMenuHeight 返回的值是 0,但第二次popup就可以返回正确的高度。因为我的popupmenu里面的内容是预先设置好的。并不是onPupup时临时添加的。感觉不应该会返回0才对。不知道为什么了?还有一个是,我点击image popup一个菜单。但popup后,该image不会返回onmouseup事件。
操作是。点击image1-->弹出菜单-->点击菜单和image外的其他空余地方。我是把image1放在一个panel上的。点击在panel的空白地方。就不会返回image1.onmouseup事件。
不知道有没有方法解决。
var
X, Y: Integer;
P: TPoint;
begin
P.X:= pn_StatusBar.BoundsRect.Left + pn_MainView_LeftSide.Width;
P.Y:= pn_StatusBar.BoundsRect.Top;
Windows.ClientToScreen(Panel1.Handle, P);
X:= P.X;
Y:= P.Y; Y:= Y - GetPopMenuHeight(Self.Handle, PopupMenu_StartMenu) - 6;
PopupMenu_StartMenu.Popup(X, Y);
end;//获取popupmenu的高度。
function GetPopMenuHeight(Handle: THandle; PopupMenu: TPopupMenu): Integer;
var
i, sHeight: Integer;
vRect: TRect;
begin
sHeight:= 0;
for i:= 0 to PopupMenu.Items.Count - 1 do
begin
GetMenuItemRect(Handle, PopupMenu.Handle, PopupMenu.Items[i].MenuIndex, vRect);
sHeight:= sHeight + (vRect.Bottom - vRect.Top{每个菜单项的高度});
end;
result:= sHeight;
end;有2个问题想请教下。
现在有个问题是,我第一次点击Image1,弹出PopupMenu,位置不对,跟踪后是发现 GetPopMenuHeight 返回的值是 0,但第二次popup就可以返回正确的高度。因为我的popupmenu里面的内容是预先设置好的。并不是onPupup时临时添加的。感觉不应该会返回0才对。不知道为什么了?还有一个是,我点击image popup一个菜单。但popup后,该image不会返回onmouseup事件。
操作是。点击image1-->弹出菜单-->点击菜单和image外的其他空余地方。我是把image1放在一个panel上的。点击在panel的空白地方。就不会返回image1.onmouseup事件。
不知道有没有方法解决。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货