找回密码
 加入
搜索
查看: 5423|回复: 9

[图形处理] 请教GUICtrlCreateLabel文字内容过长时如何自动进行滚动显示

  [复制链接]
发表于 2010-12-17 12:37:40 | 显示全部楼层 |阅读模式
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 592, 151, 192, 124)
$Label1 = GUICtrlCreateLabel("我们都是共产主义接班人", 88, 40, 116, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

        EndSwitch
WEnd
有可能获取的数据显示不全,就会自动换行,如果让他滚动显示而不自动换行呢!滚动到结尾然后停一会再滚动。就像手机QQ看签名的时候就是滚动式的
发表于 2010-12-17 12:45:22 | 显示全部楼层
要滚动?我提个思路,label控件设置的长度足够显示全部文本,高度只够一行的高度,但是GUI窗体宽度不够,所以label中的内容显示不全,这时在while里或者注册个AdlibRegister函数,通过判断和循环等方式用GUICtrlSetPos函数不断的移动label控件即可,具体自己想吧
发表于 2010-12-17 12:58:23 | 显示全部楼层
不懂耶,,帮顶,,等达人来解答
 楼主| 发表于 2010-12-17 13:17:25 | 显示全部楼层
回复 2# 飘云


    不懂      可否给个例子
发表于 2010-12-17 14:30:42 | 显示全部楼层
是换行,不是滚动..
发表于 2010-12-17 19:06:31 | 显示全部楼层
本帖最后由 飘云 于 2010-12-17 19:14 编辑

回复 1# zz999

我想你要的是这种效果吧?


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 593, 152, -1, -1)
$Label1 = GUICtrlCreateLabel("我们都是共产主义接班人", 100, 40, 136, 17,$SS_LEFTNOWORDWRAP)
$discov1 = GUICtrlCreateLabel("", 40, 40, 60, 17)
GUICtrlSetBkColor (-1,0xF0F0F0)
$discov2 = GUICtrlCreateLabel("", 200, 40, 50, 17)
GUICtrlSetBkColor (-1,0xF0F0F0)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $setup=1
AdlibRegister("yidong",50)

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

        EndSwitch
WEnd

Func yidong()
        $pos = ControlGetPos($Form1_1,"",$Label1)
        Select
                Case $pos[0]>66 And $setup=1
                        GUICtrlSetPos($Label1,$pos[0]-1,$pos[1])
                Case $pos[0]<100 And $setup=-1
                        GUICtrlSetPos($Label1,$pos[0]+1,$pos[1])
                Case $pos[0]=66 Or $pos[0]=100
                        $setup *= -1
        EndSelect
EndFunc

评分

参与人数 1金钱 +25 收起 理由
afan + 25

查看全部评分

发表于 2010-12-17 19:10:29 | 显示全部楼层
本帖最后由 飘云 于 2010-12-17 19:17 编辑

取巧的方法,用两个label封住左右,原始label宽度要达到能显示全部文本,当然,放置别的控件也可以,主要目的是遮住左右罢了,如果你的GUI窗体本身就不宽,那连控件也省了,利用窗体本身就能遮住,当然,我那代码很粗糙,具体问题具体分析,后面碰上啥不好办的再考虑~
发表于 2010-12-18 01:16:35 | 显示全部楼层
瞎写的,感觉闪烁不太好
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <GuiListView.au3>

$txt = "[欧洲冠军联赛1/8决赛抽签仪式在瑞士尼翁欧足联总部进行,巴塞罗那和皇马则分别碰上老对手阿森纳和里昂。]"
$t2 = $txt
$Label_width = 300                        ;Label控件的宽度

$GUI = GUICreate("", 320, 120)
$Label = GUICtrlCreateLabel($txt, 10, 35, $Label_width, 20, $SS_LEFTNOWORDWRAP)        ;$SS_LEFTNOWORDWRAP样式强制单行显示
GUICtrlSetCursor(-1, 0)

$hListView = GUICtrlCreateListView("", 2, 2, 300, 200)                                ;这个ListView只是用来计算字符串占用的像素宽度的,无实际意义。
GUICtrlSetState(-1, $GUI_HIDE)

$Switch = 0

GUISetState()

While 1
        $t_width = _GUICtrlListView_GetStringWidth($hListView, $t2)                ;计算字符串占用的像素宽度
        $msg = GUIGetMsg()
        Switch $msg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
        If $t_width > $Label_width And $Switch = 0 Then        
                AdlibRegister("A", 200)                                         ;时间越短滚动越快
                $Switch = 1
        ElseIf $t_width <= $Label_width Then                        ;如果剩下的字符占用的像素宽度小于或等于LABEL控件宽度,则说明字符已滚动至末尾
                AdlibUnRegister("A")
                Sleep(1000)
                GUICtrlSetData($Label, $txt)                                ;将字符串恢复原状
                $t2 = $txt
                $Switch = 0
                Sleep(1000)
        EndIf
WEnd
        

Func A()
        $t2 = StringTrimLeft($t2, 1)                                        ;删除字符串从左起的第一个字符
        GUICtrlSetData($Label, $t2)
EndFunc

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
zz999 + 30 + 5 这个牛X,没想到还是这位仁兄帮了我 !

查看全部评分

发表于 2010-12-18 14:53:33 | 显示全部楼层
LS这个好,学习了
发表于 2010-12-18 16:35:35 | 显示全部楼层
代码学习了....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 06:13 , Processed in 0.104228 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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