überlangen Text in Label scrollen

  • Hallo,ich hab hier ein kleines Script,welches erst als .exe und danach als.scr umgewandelt einen Bildschirmschoner im Bluescreenformat "darstellen soll",der aber statt Fehlercodes alle meine .au3 Scripts anzeigt.Funzt soweit,nur hätte ich gern zeilentechnisch längere Scripte im Label gescrollt dargestellt,bevor der Text wechselt.Geht das???

    Spoiler anzeigen

    #include <WindowsConstants.au3>
    #Include <File.au3>
    #include <GUIConstantsEx.au3>
    #include "_FilePathListToArray.au3"

    $datei=_FilePathListToArray(@ScriptDir,".au3",1)
    $zufall=Random(1, $datei[0],1)
    $text=FileRead($datei[$zufall])
    $1=GUICreate("",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP)
    $2=GUICtrlCreateLabel($text,10,10,@DesktopWidth,@DesktopHeight )
    GUICtrlSetColor(-1,0xffffff)
    GUICtrlSetFont(-1,24,400,0,"Consolas")
    GUISetBkColor(0x0000ff)
    $sek=TimerInit()
    GUISetState(@SW_SHOW)

    while 1
    if TimerDiff($sek)>2000 Then
    $zufall=Random(1, $datei[0],1)
    $text="ZEILEN: "&_FileCountLines($datei[$zufall])&@CR&FileRead($datei[$zufall])
    GUICtrlSetData($2,$text)
    $sek=TimerInit()
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_MOUSEMOVE
    ExitLoop
    EndSwitch
    WEnd


    Einmal editiert, zuletzt von TAFFY (20. August 2010 um 20:59)

  • Hallo TAFFY,

    herzlich willkommen im Forum und viel Spass mit AutoIt,

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    So und jetzt zu deiner Frage: natürlich machbar z.B. so

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #Include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;#include "_FilePathListToArray.au3"
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $aLines[1]=[0] ;Zeilen der aktuelen Datei
    Const $iMaxLines = 16 ;max. anzuzeigende Zeilen
    Global $iLine = 0 ;akt. Zeile die als 1. angezeigt wird
    ;$datei = _FilePathListToArray(@ScriptDir & "..\MDemos", ".au3", 1)
    $datei = _FileListToArray(@ScriptDir, "*.au3", 1)
    $zufall = Random(1, $datei[0], 1)
    $text = FileRead(@ScriptDir & "\" & $datei[$zufall])
    $1 = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    Global $2 = GUICtrlCreateLabel($text, 10, 10, @DesktopWidth, @DesktopHeight)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetFont(-1, 24, 400, 0, "Consolas")
    GUISetBkColor(0x0000ff)
    Global $sek1 = TimerInit()
    Global $Sek2 = $sek1
    GUISetState(@SW_SHOW)
    _nextFile()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    If TimerDiff($sek1) > int(($aLines[0]*2-1)/$iMaxLines*2000) Then _nextFile()
    If TimerDiff($sek2) > 2000 Then _scroll()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_MOUSEMOVE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _nextFile()
    $iLine = 0
    $aLines[0] = 0
    while $aLines[0] = 0
    $zufall = Random(1, $datei[0], 1)
    _FileReadToArray(@ScriptDir & "\" & $datei[$zufall],$aLines)
    WEnd
    _scroll()
    $sek1 = TimerInit()
    $sek2 = $sek1
    EndFunc ;==>_nextFile

    [/autoit] [autoit][/autoit] [autoit]

    Func _scroll()
    if $iLine > $aLines[0]-$iMaxLines Then return
    $text = $datei[$zufall] & " Zeilen: " & $aLines[0] & @CR
    for $i = 1 to $iMaxLines
    $text &= $aLines[$i+$iLine] & @CRLF
    Next
    $iLine += 1
    if $iLine > $iMaxLines Then $iLine = 0
    GUICtrlSetData($2, $text)
    $sek2 = TimerInit()
    EndFunc

    [/autoit]

    mit GDI+ (kannst du ja wenn du mehr Erfahrung hast ausprobieren) sind noch viel schönere Effekte möglich siehe Star Wars Intro NEU von eukalyptus. Das kannst duu ja später mal probieren, wenn du mehr Erfahrung hast,

    mfg autoBert

  • Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $datei = _FileListToArray(@ScriptDir, "*.au3", 1)
    $zufall = Random(1, $datei[0], 1)
    $text = FileRead($datei[$zufall])
    $1 = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    $2 = GUICtrlCreateLabel($text, 10, 10, @DesktopWidth, @DesktopHeight)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlSetFont(-1, 24, 400, 0, "Consolas")
    GUISetBkColor(0x0000ff)
    $sek = TimerInit()
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    If TimerDiff($sek) > 2000 Then
    $zufall = Random(1, $datei[0], 1)
    $text = FileRead($datei[$zufall])
    StringReplace($text, @CRLF, @CRLF)
    $zeilen = @extended
    $text = @crlf & "ZEILEN: " & $text &@crlf
    For $i = 1 To $zeilen - 20
    $text = StringTrimLeft($text, StringInStr($text, @CRLF))
    GUICtrlSetData($2, $text)
    Sleep(500)
    If GUIGetMsg() = $GUI_EVENT_MOUSEMOVE Then Exit
    Next
    $sek = TimerInit()
    EndIf
    WEnd

    [/autoit]

    so?