一个挺难的问题,如何创建像hint一样的提示框?

CppFile 2010-01-08 08:55:30
我想实现这样的功能:

窗体上有edit框,有datetimepicker,有时候用户输入的数据出现问题,那么我需要在用户点击确定以后,判断用户的输入,
如果输入有问题,就在edit框或者datetimepicker那里显示一个像hint一样的窗体,里面有一个小小的警示标志,像
MessageBox那样的图标,然后有一个小叉用于立刻关闭,如果用户没有点叉叉,这个窗体也会在3秒后自动关闭,就像Hint一样,我网上查了一下,很多都是自己写一个类,替换Form的Hint类,但是这样,就没法自定义的显示我所需要显示的内容(比如,关闭按钮,警示图标),请问有什么好的解决方法么?

我觉得这样的做法,用户的界面友好度比较好
...全文
141 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
土著巫师 2010-01-12
  • 打赏
  • 举报
回复
Application->HintPause = 0; // VCL源码揭示:这个值为0时立即显示,祝你好运。
CppFile 2010-01-09
  • 打赏
  • 举报
回复
在窗体的构造函数加上了Application->HintPause = 100;

点击btn1,依然没有在edt1上弹出hint窗,必须把鼠标移动到edt1上,hint才出来,如果让鼠标不用移动到edt1上就能弹出呢?
flowercity 2010-01-09
  • 打赏
  • 举报
回复
UP

妖哥真是专业啊
ccrun.com 2010-01-08
  • 打赏
  • 举报
回复
Application->HintPause = 100;
CppFile 2010-01-08
  • 打赏
  • 举报
回复
我搜索了一下, 有位朋友写的代码,我稍微修改了一下,但是发现提示信息没有立刻显示出来,而是鼠标放上去过一会才显示出来,如何让他立刻显示出来呢?

下面是代码

TToolInfo ToolInfo;
void TForm1::AddToolTip(HWND hWnd, int IconType,char *Text,char *Title, TColor BackColor,TColor TextColor)
{
HWND hTooltip;
char buffer[256];
TRect Rect;
hTooltip =CreateWindowEx(0/*WS_EX_TOPMOST*/,
TOOLTIPS_CLASS,
0,
TTS_BALLOON,/*|TTS_ALWAYSTIP|TTS_NOPREFIX*/
0,
0,
0,
0,
Form1->Handle,
0,
0,
NULL);
if (hTooltip != 0 )
{
SetWindowPos(hTooltip, 0/*HWND_TOPMOST*/, 0, 0, 0, 0, /*SWP_NOMOVE|SWP_NOSIZE|*/SWP_NOACTIVATE);
ToolInfo.cbSize = sizeof(TToolInfo);
ToolInfo.uFlags = TTF_SUBCLASS;//|TTF_TRANSPARENT;
ToolInfo.hinst = NULL;
//ToolInfo.uId=
}
if( hWnd != 0 && ::GetClientRect(hWnd, &Rect) )
{
ToolInfo.hwnd=hWnd;
ToolInfo.rect=Rect;
ToolInfo.lpszText=Text;
SendMessage(hTooltip, TTM_ADDTOOL, 0, int(&ToolInfo));
memset(buffer, 0, sizeof(buffer));
lstrcpy(buffer,Title);
if(IconType>3 || IconType<0) IconType = 0;
if (BackColor!=0 ) SendMessage(hTooltip, TTM_SETTIPBKCOLOR, BackColor, 0);
if (TextColor!=0 ) SendMessage(hTooltip, TTM_SETTIPTEXTCOLOR, TextColor, 0);
if (Title!=0) SendMessage(hTooltip, TTM_SETTITLE, IconType, int(&buffer));
}
}

void __fastcall TForm1::btn1Click(TObject *Sender)
{
AddToolTip(edt1->Handle,1, "fdf", "ee",clRed,clBlue);

}
ccrun.com 2010-01-08
  • 打赏
  • 举报
回复
TBalloonHint是CBuilder2009/2010中才有的组件,原理就是创建一个有TTS_BALLOON风格的提示窗口.
CppFile 2010-01-08
  • 打赏
  • 举报
回复
TBalloonHint bcb6有这个类吗?能一直到bcb6上吗?
编译失败 2010-01-08
  • 打赏
  • 举报
回复
试试TBalloonHint,完全满足你的要求。
ccrun.com 2010-01-08
  • 打赏
  • 举报
回复
几年前写的一个例子:

如何自定义提示窗口(Hint Window)
http://www.ccrun.com/article.asp?i=642&d=u7p4j5
ccrun.com 2010-01-08
  • 打赏
  • 举报
回复
可以搞一个气球风格(TTS_BALLOON)的提示框.如果想显示更多的内容,从THintWindow继承一个类,在其中加入想要显示的图标,以及更多的提示信息,然后替换HintWindowClass就可以了.我的Spy4Win中就是使用这样的方式实现自定义提示框.

13,825

社区成员

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

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