社区
C++ Builder
帖子详情
StringGrid中实如何现如提示功能
ie4888
2006-06-28 04:33:18
鼠标一到到某一Cell,显示相关的提示Hint
1、提示内容是固定的如何实现--相对简单
2、Hint是动态的,即鼠标移动到该Cell后,计算数据得到提示再显示,怎么实现?
...全文
352
22
打赏
收藏
StringGrid中实如何现如提示功能
鼠标一到到某一Cell,显示相关的提示Hint 1、提示内容是固定的如何实现--相对简单 2、Hint是动态的,即鼠标移动到该Cell后,计算数据得到提示再显示,怎么实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueDeepOcean
2006-06-29
打赏
举报
回复
http://community.csdn.net/Expert/topic/4848/4848617.xml?temp=2.766055E-02
ie4888
2006-06-29
打赏
举报
回复
各位高人,我几年没用Delphi和 C++Builder了了,最后一次使用还是Delphi3,C++Builder 3
给分、给分
BlueDeepOcean
2006-06-29
打赏
举报
回复
我没说错吧,就需要再增加那么几行就可以大功告成了。
LZ现身!
BlueDeepOcean
2006-06-29
打赏
举报
回复
^o^
安馨安旭
2006-06-29
打赏
举报
回复
呵呵,开始是出了几个错误,不够后来都自己改了^_^
BlueDeepOcean
2006-06-29
打赏
举报
回复
另外,你可能粘贴试验的代码也选错了吧,为了这个问题,我粘贴了很多……^-^b
安馨安旭
2006-06-29
打赏
举报
回复
哦,没注意你留的那个的东西,不好意思……
BlueDeepOcean
2006-06-29
打赏
举报
回复
援引早期的回复:
上述代码存在一个问题,就是当鼠标在非StringGrid区域从StringGrid的右侧和下侧进入StringGrid时,将出现错误。后来经过分析,发现原来是组件成像过程中画组件的时候出现的右侧和下侧“阴影”区域所产生的鼠标值的问题。
这个问题我已经解决了。但是希望楼主自己解决,毕竟吃现成的对你弊大于利。
BlueDeepOcean
2006-06-29
打赏
举报
回复
上面的代码我说了存在一些缺陷,留给楼主改正,大部分已经实现了,而且我已经将这个缺陷给改正了。如果你想得到完美的结果,可以对此进行修改的。
BlueDeepOcean
2006-06-29
打赏
举报
回复
怎么在我的机器上没有出现过这个问题呢?
安馨安旭
2006-06-29
打赏
举报
回复
这种情况是鼠标不管是从哪个方向移出表格在移回表格产生的
安馨安旭
2006-06-29
打赏
举报
回复
显示的格子不对应,比如说我鼠标放的是第3行的第三格,但是显示的是第2行的第3格内容。。。
BlueDeepOcean
2006-06-29
打赏
举报
回复
楼上说说怎么个不舒服法?
安馨安旭
2006-06-29
打赏
举报
回复
学习一下鼠标移动显示内容,发现用起来很不舒服。。。
daydayup234
2006-06-29
打赏
举报
回复
对于第2个问题,如果指“点击该单元格”
还可以有另外截然不同的思路。
daydayup234
2006-06-29
打赏
举报
回复
我回答“相对简单”的第1问:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->Hint= //注意缺省 空
"1、提示内容是固定的这样实现--\
只要鼠标在StringGrid1上任意位置停留一下\
就会显示这个hint";
StringGrid1->ShowHint=true;//注意缺省 false
StringGrid1->ParentShowHint=false;//注意缺省 true
}
BlueDeepOcean
2006-06-29
打赏
举报
回复
上述代码存在一个问题,就是当鼠标在非StringGrid区域从StringGrid的右侧和下侧进入StringGrid时,将出现错误。后来经过分析,发现原来是组件成像过程中画组件的时候出现的右侧和下侧“阴影”区域所产生的鼠标值的问题。
这个问题我已经解决了。但是希望楼主自己解决,毕竟吃现成的对你弊大于利。
亮灯了
2006-06-29
打赏
举报
回复
支持一下。
BlueDeepOcean
2006-06-29
打赏
举报
回复
以下代码实现了当鼠标移动到StringGrid的任意Cell上方时均可使其获得焦点,并显示相应的但愿格内容提示:
.h
#incluce <math.hpp>
.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unt_StringGrid.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
THintWindow *hw;
TPoint P;
int CurRIdx,CurCIdx;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
/*
The Matrix is 5×5
*/
hw = new THintWindow(StringGrid1);
hw->Parent = StringGrid1;
for (int r = 0;r < StringGrid1->RowCount;r ++)
for (int c = 0;c < StringGrid1->ColCount;c ++)
StringGrid1->Cells[c][r] = random(StringGrid1->ColCount * StringGrid1->RowCount);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
P.x = X;
P.y = Y;
if (P.x > ((TStringGrid*)Sender)->CellRect(((TStringGrid*)Sender)->Col,((TStringGrid*)Sender)->Row).left &&
P.x < ((TStringGrid*)Sender)->CellRect(((TStringGrid*)Sender)->Col,((TStringGrid*)Sender)->Row).right &&
P.y > ((TStringGrid*)Sender)->CellRect(((TStringGrid*)Sender)->Col,((TStringGrid*)Sender)->Row).top &&
P.y < ((TStringGrid*)Sender)->CellRect(((TStringGrid*)Sender)->Col,((TStringGrid*)Sender)->Row).bottom)
{
hw->Left = Left + ((TStringGrid*)Sender)->Left + ((TStringGrid*)Sender)->DefaultColWidth / 3 + P.x;
hw->Top = Top + ((TStringGrid*)Sender)->Top + ((TStringGrid*)Sender)->DefaultRowHeight * 3 / 2 + P.y;
hw->Caption = ((TStringGrid*)Sender)->Cells[((TStringGrid*)Sender)->Col][((TStringGrid*)Sender)->Row];
hw->Refresh();
}
else //处理对其他单元格的选择
{
CurCIdx = Floor(P.x / ((TStringGrid*)Sender)->DefaultColWidth);
CurRIdx = Floor(P.y / ((TStringGrid*)Sender)->DefaultRowHeight);
((TStringGrid*)Sender)->Col = CurCIdx;
((TStringGrid*)Sender)->Row = CurRIdx;
}
hw->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if (ACol == CurCIdx && ARow == CurRIdx)
CanSelect = true;
}
//---------------------------------------------------------------------------
forverlove
2006-06-28
打赏
举报
回复
学习
加载更多回复(2)
C# data
grid
view实现Delphi
string
grid
功能
C# data
grid
view实现Delphi
String
Grid
功能
,初学者很有用
delphi
String
Grid
功能
程序
实现了使用
String
Grid
各种
功能
的代码例子,比如嵌套日期控件,对它的 属性的灵活运用等!
string
grid
的check
功能
通过delphi6编写的代码 该
string
grid
的单元格具有check(复选框的
功能
)
string
grid
多选拖拽换行
使用
string
grid
实现行多选, 然后通过拖拽移动选择行位置 按住ctrl可以多选不连续的行
String
Grid
DB
Grid
全书
详细讲解
String
Grid
DB
Grid
用法,有delphi源码
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章