delphi 如何在使用pagecontrol 控件动态创建页面后可以在页面表头右键出现关闭菜单的问题

tom_adam 2009-03-10 10:49:10
delphi 如何在使用pagecontrol 控件动态创建页面后可以在页面表头右键出现关闭菜单的问题
我现在动态创建页面,想在页面表头可以实现右键出现菜单,可以实现某些功能!动态创建popmenu后老是不能锁定表头,请教高手!!!
...全文
1032 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
flanks 2010-05-10
  • 打赏
  • 举报
回复
领教....测试通过, 不过不是我想要的结果.
hnhtwsl 2009-11-05
  • 打赏
  • 举报
回复
默认的pagecontrol真好,有TabRect,rz的在TabAtPos,那CXpagecontrol在哪里?
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bdmh 的回复:]
引用 8 楼 tom_adam 的回复:
bdmh,是这样的,我的程序是这样的,点击MainMenu1,动态生成Tabsheet,然后希望的在Tabsheet的页签位置可以右键出现菜单。你上面说的是将菜单锁定在光标的位置。


你右键(或左键)点击那个页签,不就可以了吗
[/Quote]

不行啊,在Tabsheet别的地方点击右键同样是会出现Popmenu的
bdmh 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tom_adam 的回复:]
bdmh,是这样的,我的程序是这样的,点击MainMenu1,动态生成Tabsheet,然后希望的在Tabsheet的页签位置可以右键出现菜单。你上面说的是将菜单锁定在光标的位置。
[/Quote]

你右键(或左键)点击那个页签,不就可以了吗
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
bdmh,是这样的,我的程序是这样的,点击MainMenu1,动态生成Tabsheet,然后希望的在Tabsheet的页签位置可以右键出现菜单。你上面说的是将菜单锁定在光标的位置。
bdmh 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tom_adam 的回复:]
是这样的,我使用pagecontrol动态创建页面,现在是双击页签关闭的,我想在页签的地方弄在右键功能菜单,怎么实现的问题。
[/Quote]

前面的代码已经实现了,不知你还有什么问题
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
只需要在动态创建的Tabsheet的页签位置显示右键!!!
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
是这样的,我使用pagecontrol动态创建页面,现在是双击页签关闭的,我想在页签的地方弄在右键功能菜单,怎么实现的问题。
de410 2009-03-10
  • 打赏
  • 举报
回复
不理解楼主的意思,若是锁定菜单位置,3楼的回答即可满足要求~~
kye_jufei 2009-03-10
  • 打赏
  • 举报
回复
我測試沒有問題,樓上獲取坐標你試試

var
p:TPoint;
begin
GetCursorPos(p);
pm1.Popup(p.X,p.Y);
end;

纯冰糖 2009-03-10
  • 打赏
  • 举报
回复
不太理解你的意思,我试试没啥问题啊
bdmh 2009-03-10
  • 打赏
  • 举报
回复
楼主的意思是右键菜单没有在鼠标位置弹出吗

var
p:TPoint;
begin
GetCursorPos(p);
pm1.Popup(p.X,p.Y);
end;
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
哈哈,已经测试过了,bdmh的代码是非常正确,谢谢大家!!!!
Harryfin 2009-03-10
  • 打赏
  • 举报
回复
Rz的也找到了,可在TabAtPos判断
Harryfin 2009-03-10
  • 打赏
  • 举报
回复
试过下似乎没问题,收回上面说的。

ps. 默认的pagecontrol真好,有TabRect,rz的没... - -
bdmh 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 Harryfin 的回复:]
这个方法在页面个数超出pagecontrol宽度时恐怕有问题?
[/Quote]

不会有问题,这与pagecontrol宽度无关,他是循环判断每一个标签的TabRect
bdmh 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 tom_adam 的回复:]
bdmh,这段代码我测试过了,在Tabsheet的其他地方还是可以右键出现菜单的
[/Quote]
这段代码的意思是,当你右键点击任意一个标签时,判断鼠标位置是否在某个标签内,如果在,则把它置成成活动页,然后弹出菜单,这样就可以可以关闭当前的活动页了,不知道你指的其它地方是什么地方
Harryfin 2009-03-10
  • 打赏
  • 举报
回复
这个方法在页面个数超出pagecontrol宽度时恐怕有问题?
tom_adam 2009-03-10
  • 打赏
  • 举报
回复
bdmh,这段代码我测试过了,在Tabsheet的其他地方还是可以右键出现菜单的
bdmh 2009-03-10
  • 打赏
  • 举报
回复
代码写在PageControl的MouseUp事件中

procedure TForm1.pgc1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i:Integer;
R:TRect;
p:TPoint;
begin
GetCursorPos(p);
for i := 0 to pgc1.PageCount - 1 do
begin
R := pgc1.TabRect(i);
if (R.Left<=X) and (R.Right>=X) and (R.Top<=Y) and (R.Bottom>=Y) then
begin
pgc1.ActivePageIndex := i;
pm1.Popup(p.X,p.Y);//弹出菜单
break;
end;
end;
end;
加载更多回复(2)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧