找回密码
 加入
搜索
查看: 13940|回复: 17

[GUI管理] 如何给GUI input控件设置一个立即显示的Tip提示信息

 火.. [复制链接]
发表于 2011-2-25 18:32:54 | 显示全部楼层 |阅读模式
悬赏50金钱已解决
本帖最后由 gapkiller 于 2011-2-26 11:43 编辑

给自己创建的GUI 控件设置一个立即显示的tip提示

类似于下图所示:


我尝试过使用GUICtrlSetTip()
发现这个函数只有在鼠标移动到该控件上, 信息才能显示.

那么如何让这个tip立即显示呢?

===============================================================
补充:
加了$ES_NUMBER扩展风格的input控件, 在输入非number型数据时, 提示的错误信息直接指向输入光标所在的位置.
如果我们能够获得输入光标所在的位置, 这个应该好很多.
附件: 您需要 登录 才可以下载或查看,没有账号?加入

最佳答案

查看完整内容

#Include _GUICtrlEdit_ShowBalloonTip($hWnd, $sTitle, $sText, $iIcon)

评分

参与人数 1金钱 +10 收起 理由
pusofalse + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2011-2-25 18:32:55 | 显示全部楼层
#Include <GuiEdit.au3>
_GUICtrlEdit_ShowBalloonTip($hWnd, $sTitle, $sText, $iIcon)
发表于 2011-2-25 19:21:02 | 显示全部楼层
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=c:\documents and settings\administrator\my documents\form1.kxf
$Form1 = GUICreate("test", 409, 260, 434, 170)
$Label1 = GUICtrlCreateLabel("X:", 40, 32, 86, 17)
$Input1 = GUICtrlCreateInput("", 120, 32, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
 
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
 
        EndSwitch
WEnd
 
 
 
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
        Local Const $EN_CHANGE = 0x300
 
        Local $nNotifyCode = BitShift($wParam, 16)
        Local $nID = BitAND($wParam, 0xFFFF)
        Local $hCtrl = $lParam
        If $nNotifyCode = $EN_CHANGE Then                        
                If GUICtrlRead($input1)>169 Then ToolTip("输入数据太大",434+120+121,170+32+21,"出错",3,1)
        EndIf
EndFunc   ;==>MY_WM_COMMAND

评分

参与人数 2金钱 +35 贡献 +1 收起 理由
lynfr8 + 10 + 1
gapkiller + 25 使用的tooltip, 并计算位置, 也是不错的方法 ...

查看全部评分

发表于 2011-2-25 19:34:08 | 显示全部楼层
路过,顶一个
发表于 2011-2-25 19:59:31 | 显示全部楼层
本帖最后由 guang19831217 于 2011-2-25 20:00 编辑

支持一下,偶也在学习中
#include <EditConstants.au3>

$Form1 = GUICreate("Form1", 633, 447, 192, 124)
$Input1 = GUICtrlCreateInput("", 95, 205, 129, 21,$ES_NUMBER)
GUICtrlSetLimit(-1, 9)
GUISetState(@SW_SHOW)

While 1
Sleep(10)
WEnd
发表于 2011-2-25 20:13:16 | 显示全部楼层
楼主的意思是不是一开软件就显示tip信息?

借用一下楼上几位的代码
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=c:\documents and settings\administrator\my documents\form1.kxf
$Form1 = GUICreate("test", 409, 260, 434, 170)
$Label1 = GUICtrlCreateLabel("X:", 40, 32, 86, 17)
$Input1 = GUICtrlCreateInput("", 120, 32, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
GUISetState(@SW_SHOW)
ToolTip("只能输入长度小于十位数字",434+120+121,170+32+21,"",3,1)
#EndRegion ### END Koda GUI section ###
 
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
 
        EndSwitch
WEnd
 
 
 
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
        Local Const $EN_CHANGE = 0x300
 
        Local $nNotifyCode = BitShift($wParam, 16)
        Local $nID = BitAND($wParam, 0xFFFF)
        Local $hCtrl = $lParam
        If $nNotifyCode = $EN_CHANGE Then                       
                If StringLen(GUICtrlRead($input1))>10 Then 
                                ToolTip("输入数据太大",434+120+121,170+32+21,"出错",3,1)
                        Else
                                ToolTip("",434+120+121,170+32+21,"出错",3,1)
                        EndIf
                        EndIf
EndFunc   ;==>MY_WM_COMMAND

评分

参与人数 1金钱 +10 收起 理由
gapkiller + 10 谢谢关注

查看全部评分

发表于 2011-2-26 09:11:26 | 显示全部楼层
收藏。多谢各位分享。肯定有用处
发表于 2011-2-26 11:34:02 | 显示全部楼层
代码收下了,谢谢....

评分

参与人数 1金钱 +10 收起 理由
子非鱼 + 10

查看全部评分

 楼主| 发表于 2011-2-26 11:47:52 | 显示全部楼层
楼主的意思是不是一开软件就显示tip信息?

借用一下楼上几位的代码
gto250 发表于 2011-2-25 20:13


这个到不一定,
其实我是想在点击 OK button 之后提示这么一个信息,表示输入有误.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-2-26 16:07:46 | 显示全部楼层
#Include
_GUICtrlEdit_ShowBalloonTip($hWnd, $sTitle, $sText, $iIcon)
afan 发表于 2011-2-26 13:30



    啊, 我亲爱的afan....你太帅了. 我该怎么报答你呢?
 楼主| 发表于 2011-2-26 16:11:10 | 显示全部楼层
本帖最后由 gapkiller 于 2011-2-26 16:13 编辑

为什么WinGetCaretPos ( ) 不能获得正确坐标呢???
发表于 2011-2-26 17:31:33 | 显示全部楼层
回复 11# gapkiller
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=c:\documents and settings\administrator\my documents\form1.kxf
$Form1 = GUICreate("test", 409, 260, 434, 170)
$Label1 = GUICtrlCreateLabel("X:", 40, 32, 86, 17)
$Input1 = GUICtrlCreateInput("", 120, 32, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd



Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
        Local Const $EN_CHANGE = 0x300

        Local $nNotifyCode = BitShift($wParam, 16)
        Local $nID = BitAND($wParam, 0xFFFF)
        Local $hCtrl = $lParam
        If $nNotifyCode = $EN_CHANGE Then
                If GUICtrlRead($Input1) > 169 Then
                        $caretpos = _Caret_GetPos()
                        ToolTip("输入数据太大", 434 + 120 + $caretpos[0], 170 + 32 + $caretpos[1] + 21 * 2, "出错", 3, 3)
                EndIf
        EndIf
EndFunc   ;==>MY_WM_COMMAND

Func _Caret_GetPos()
        Local $POINT = DllStructCreate("long;long")
        Local $Return[2]        
        DllCall("User32.dll", "int", "GetCaretPos", "ptr", DllStructGetPtr($POINT))
        $Return[0] = DllStructGetData($POINT, 1)
        $Return[1] = DllStructGetData($POINT, 2)
        Return $Return
EndFunc   ;==>_Caret_GetPos

评分

参与人数 1金钱 +25 收起 理由
gapkiller + 25 帅呀

查看全部评分

发表于 2011-2-26 20:23:07 | 显示全部楼层
又学到了一招
发表于 2011-2-27 18:20:37 | 显示全部楼层
都是高手,学习了
发表于 2011-3-3 09:13:49 | 显示全部楼层
呵呵  好像是只能输入数字的那个就可以
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 16:25 , Processed in 0.217076 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表