怎样判断PageControl的页标签

MYMGrub 2009-08-21 12:50:39
我想把鼠标放在PAGECONTROL的页标签上,然后点击鼠标右键关闭这个标签,可是我怎么知道我鼠标右键点的这个标签是哪个呀??
先谢谢各位了啊!!
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MYMGrub 2009-08-21
  • 打赏
  • 举报
回复
我的意思是说假如方框太多了,那么会不会出错误呀??比如我加了六个方框,但是我的页面上只能显示五个方框,那么就会隐藏起来一个吧,那我按右边的左右箭头把第六个显示出来的时候那第一个就会被隐藏了,那时候我在原来第一个方框的位置点击鼠标的话不会让第一个方框出现问题吗??
我已经找到方法了,我的意思用这个比较有用:PageControl1.IndexOfTabAt(X,Y)
还是谢谢各位了,如果哪位有好的建议来教给我,欢迎继续在这个帖子里留言,不过我不会加分了:)
谢谢了!!
fxworld 2009-08-21
  • 打赏
  • 举报
回复
//更正
void __fastcall TForm1::PageControl1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

if( !Shift.Contains( ssRight ) )
return;

int tabcnt = PageControl1->PageCount;

TRect *tabrect = new TRect[tabcnt];

TPoint mousePt(X,Y);
bool rs = false;
int idx ;
for( idx=0;idx < tabcnt;idx++ )
{
tabrect[idx] = PageControl1->TabRect(idx);
if( PtInRect(tabrect[idx],mousePt) )
{
rs=true;
break;

}
}


if( rs )
{
delete PageControl1->Pages[idx];
}


}
//---------------------------------------------------------------------------
fxworld 2009-08-21
  • 打赏
  • 举报
回复

//应该在OnMouseDown里面判断
void __fastcall TForm1::PageControl1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

if( !Shift.Contains( ssRight ) )
return;

int tabcnt = PageControl1->PageCount;

TRect *tabrect = new TRect[tabcnt];

TPoint mousePt(X,Y);
bool rs = false;
int idx ;
for( idx=0;idx < tabcnt;idx++ )
{
tabrect[idx] = PageControl1->TabRect(idx);
if( PtInRect(tabrect[idx],mousePt) )
{
rs=true;
break;

}
}


if( rs )
{
this->PageControl1->Pages[idx]->TabVisible=false;
}


}
//---------------------------------------------------------------------------
CACACACACA 2009-08-21
  • 打赏
  • 举报
回复
标签页切换的时候,会有onchange.onchanging事件,按楼上的代码处理就可以了。
fxworld 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mymgrub 的回复:]
这样不行啊,那我如果有很多很多页,那用方框定位就会出现错误了...
[/Quote]

怎么不行,PageControl 有几个Tab可以计算,每个TabRect可以计算,TabRect对应的Tabsheet也是可以定位的。
laowang2 2009-08-21
  • 打赏
  • 举报
回复
if (PageControl1->ActivePage)
delete PageControl1->ActivePage;
MYMGrub 2009-08-21
  • 打赏
  • 举报
回复
这样不行啊,那我如果有很多很多页,那用方框定位就会出现错误了...
fxworld 2009-08-21
  • 打赏
  • 举报
回复
先计算页标签的TRect,然后在OnMouseMove中判断鼠标是否在TRect的范围里。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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