【已解决】关于Lab控件中的文字滚动问题,请求帮助
本帖最后由 styledream 于 2010-7-16 17:26 编辑请问如何在文字宽度大于Lab控件宽度时,使其有自动滚动的效果
就像歌词的滚动一样,从右向左滚动
解决方法见 5#
#include <Misc.au3>
#include <File.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
If _Singleton(@ScriptName, 1) = 0 Then Exit (1) ;互斥运行
Dim $rnd,$ver, $aRecords, $LabSentence
$hGUI = GUICreate("关于文字滚动的问题", 400, 60, -1, -1)
$LabSentence = GUICtrlCreateLabel("", 5, 10, 380, 20, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
$BtnOpenFile = GUICtrlCreateButton("打开文件", 5, 35, 60, 25)
OriFile();初始化程序
AdlibRegister("ChangeSentence", 10000);10秒后自动切换句子
GUISetState()
Do
$msg = GUIGetMsg()
Switch ($msg)
Case $BtnOpenFile
OpenFile()
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
Func OriFile();程序运行后的初始化函数
Dim $szDrive, $szDir, $szFName, $szExt
$txtFile = IniRead(".\Setting.ini", "Setting", "File", "NotFound")
If _FileReadToArray($txtFile, $aRecords) Then;把文件读入数组
If $txtFile <> "" Then
For $x = 1 To $aRecords
$ver = $ver & $aRecords[$x] & @CRLF
Next
ChangeSentence()
Else
MsgBox(0, "Error", "读取文件失败!")
EndIf
Else
_PathSplit($txtFile, $szDrive, $szDir, $szFName, $szExt);拆分文件路径
MsgBox(0, "Error", "文件 “" & $szFName & $szExt & "” 不存在,请重新选取文件!")
EndIf
EndFunc ;==>OriFile
Func OpenFile() ;打开文件函数
$txtFile = FileOpenDialog("打开文件", @WorkingDir, "文本文件 (*.txt)", 1 + 2 + 8)
If $txtFile <> "" Then
If _FileReadToArray($txtFile, $aRecords) Then;把文件读入数组
For $x = 1 To $aRecords;用换行符格式化数组
$ver = $ver & $aRecords[$x] & @CRLF
Next
ChangeSentence();变换句子
IniWrite(".\Setting.ini", "Setting", "File", $txtFile);将文件路径写入配置文件
Else
MsgBox(0, "Error", "读取文件失败!")
EndIf
EndIf
EndFunc ;==>OpenFile
Func ChangeSentence();变换句子函数
$rnd = $rnd;读取正确的非空语句
$rnd = Random(1, $aRecords, 1);随机生成一个新的下一句
If $aRecords[$rnd]=="" Or $rnd=$rnd Then;空行则或随机重复则重新生成
ChangeSentence()
Else
$rnd = $rnd;存储非空的上一句下标
GUICtrlSetData($LabSentence, $aRecords[$rnd])
EndIf
EndFunc ;==>ChangeSentence
测试用例(复制以下两行并保存为“测试.txt"):
0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789
零一二三四五六七八九哟零一二三四五六七八九吮零一二三四五六七八九嘿零一二三四五六七八九懊 学习了...... {:face (319):}没有人知道怎么解决吗 http://www.autoitx.com/forum.php?mod=viewthread&tid=13634&highlight=%B9%F6%B6%AF #include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Y=120
$Form1 = GUICreate("字移动", 322, 205, -1, -1)
GUICtrlSetFont(-1, 24, 800, 0, "黑体")
$Label1 = GUICtrlCreateLabel("字移动的例子", 64, 24, 202, 37)
GUICtrlSetFont(-1, 24, 800, 0, "黑体")
GUISetState(@SW_SHOW,$Form1)
$Form2=GUICreate("", 322, 120, 0, 100, $WS_POPUP,$WS_EX_MDICHILD, $Form1)
$Label2 = GUICtrlCreateLabel(" 字移动的例子"&@CRLF&"欢迎访问初级视编室"&@CRLF&"http://dvedit.5d6d.com", 0, 120, 202, 50)
GUICtrlSetFont(-1, 12, 800, 0, "黑体")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetCursor (-1, 0)
GUISetState(@SW_SHOW,$Form2)
#EndRegion ### END Koda GUI section ###
AdlibRegister ( "_IDmov",100 )
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Label2
ShellExecute("http://dvedit.5d6d.com")
EndSwitch
WEnd
Func _IDmov()
$Y=$Y-3
If $Y<-50 then $Y=120
GUICtrlSetPos($Label2,70,$Y)
EndFunc 回复 5# rikthhpgf2005
原来是我的搜索关键字没写准,难怪搜不出相关的帖子
感谢“rikthhpgf2005 兄弟”的帮助,先来去研究一下 回复 5# rikthhpgf2005
每次读取的字符长度都不同,如何根据字符的长度创建Lab控件 回复 6# styledream
不用谢谢,互相学习{:face (270):} 来学习下。。 这个是向上移动的,向左移动的呢?
页:
[1]