有关StringGrid的问题,望高手帮忙解答

修石 2011-11-28 08:44:23

void __fastcall TFrmPhaseControl::Button4Click(TObject *Sender)
{
ShowMessage("点到我了");
}
void __fastcall TFrmPhaseControl::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{

int XCol,XRow;
StringGrid1->MouseToCell(X,Y,XCol,XRow);
if(XRow)
{
Button4->Parent=StringGrid1;
Button4->Left=StringGrid1->CellRect(5,XRow).Left;
Button4->Top=StringGrid1->CellRect(5,XRow).Top;
Button4->Width=StringGrid1->ColWidths[5];
Button4->Height=StringGrid1->RowHeights[1];
Button4->Visible=true;
Button4->OnClick=Button4Click;
}
}

为什么我点Button4的时候没任何反应,望高手指教,在下感激不尽...
...全文
142 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
修石 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ring_pt 的回复:]
如果parent不是stringgrid
left和top不能按照mousemove里的x y 来计算了


Button4->Left=StringGrid1->CellRect(5,XRow).Left + StringGrid1->Left + 2;
Button4->Top=StringGrid1->CellRect(5,XRow).Top + StringGrid1-……
[/Quote]
可以跟随鼠标移动了,请问如何点按钮后获取所在行号?
Jim@luckeeinc.com 2011-11-28
  • 打赏
  • 举报
回复
如果parent不是stringgrid
left和top不能按照mousemove里的x y 来计算了


Button4->Left=StringGrid1->CellRect(5,XRow).Left + StringGrid1->Left + 2;
Button4->Top=StringGrid1->CellRect(5,XRow).Top + StringGrid1->Top + 2;
修石 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ksrsoft 的回复:]
C/C++ code

button4设置bring to front
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
int XCol,XRow;
StringGrid1->MouseToCell(X,Y,XCol……
[/Quote]
这样写,按钮可以点击了,但是按钮不随鼠标滚动了,能否给出一个完整的解决方案,让按钮点击后能ShowMessage 出所在的行? 非常感谢
缘中人 2011-11-28
  • 打赏
  • 举报
回复
button4设置bring to front
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
int XCol,XRow;
StringGrid1->MouseToCell(X,Y,XCol,XRow);
if(XRow)
{
Button4->Left =StringGrid1->Left;
Button4->Top=StringGrid1->Top;
Button4->Width=StringGrid1->ColWidths[5];
Button4->Height=StringGrid1->RowHeights[1];
}
}
wangcftxz 2011-11-28
  • 打赏
  • 举报
回复
Button4->Parent=StringGrid1;
这样好像不行 之前我也试过 不知道为什么
把Parent设置为Form1就可以了
修石 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sxqinge 的回复:]
Button4->OnClick=Button4Click(NULL);
呵呵不知道能行不?你这种方法我没试过。。。
[/Quote]
不行的 编译通不过
sxqinge 2011-11-28
  • 打赏
  • 举报
回复
Button4->OnClick=Button4Click(NULL);
呵呵不知道能行不?你这种方法我没试过。。。
修石 2011-11-28
  • 打赏
  • 举报
回复
To:Ring_Pt 非常感谢,已经解决了,马上结贴给分
Jim@luckeeinc.com 2011-11-28
  • 打赏
  • 举报
回复
定义一个全局变量
int current_row = 0;
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
int XCol,XRow;
StringGrid1->MouseToCell(X,Y,XCol,XRow);

//增加一句
this->current_row = XRow;
}
内容概要:本文详细介绍了Anaconda的下载、安装与配置方法(2025最新版)。Anaconda是一个开源的Python/R数据科学集成开发平台,预装了1500多个科学计算库,并提供conda包管理和环境管理功能。文章首先列出了系统要求,接着分别讲述了适用于不同操作系统的下载方式,包括官方下载和国内镜像下载。然后,具体讲解了Windows、macOS和Linux三种操作系统的安装步骤,以及环境变量的手动配置方法。此外,还提供了验证安装是否成功的命令和配置国内镜像源的方法,以提高下载速度。最后,列出了一些常用conda命令和常见问题的解决方案。 适合人群:从事数据科学、机器学习领域的研究人员和开发者,特别是需要频繁使用Python科学计算库的用户。 使用场景及目标:①帮助用户快速搭建Python开发环境,尤其是需要多个Python版本共存或隔离环境的情况下;②解决因网络原因导致的下载速度慢的问题;③提供详细的安装指南,确保安装过程顺利进行;④指导用户正确配置环境变量,避免常见的安装后无法使用的错误。 阅读建议:由于Anaconda涉及多平台安装和配置,建议读者根据自己的操作系统选择相应的章节重点阅读,并严格按照步骤操作。对于初次使用者,建议先从简单的安装入手,再逐步学习环境管理和包管理的相关命令。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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