Что нового

Как добавить в форму теста - фотографии

SergVrn

Новичок
Сообщения
87
Репутация
2
Что я пытаюсь выполнить?
Ответ - опишите задачу

Есть скрипт, который работает как тест. Он постоянно висит в трее и раз в 10 минут выскакивает в виде окна, предлагая ответить на один из вопросов.
Вопросы скрипт берет из текстового файла.
Сейчас в txt - содержатся только тексты вопросов, возможных ответов и тексты правильных ответов.
И вопрос заключается в том - как заставить скрипт еще реагировать на картинку, если она представлена в одном из заданий в виде адреса на файл ?

Как разместить на этой форме - под последней кнопкой ответа - уменьшенную копию картинки, лежащей по данному адресу ?

Как я это пытался/ась выполнить?
Ответ - опишите какие действия были предприняты

Скрипт выглядит вот так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

FileChangeDir(@ScriptDir)

Global $sRead = FileRead('Тестовые вопросы и ответы.txt')
Global $aData = StringRegExp($sRead, '(?s)(Вопрос \d+\r?\n[^\r\n]+\r?\nОтветы:\r?\n.*?\r?\nПравильный:\r?\n[^\r\n]+)', 3)
Global $aQuestion_Bttn[10], $iQuestion_Lbl, $sCorret_Answer
Global $iTimer

Global $iCrctAnswr_Sleep = 10 ;Minutes
Global $iInCrctAnswr_Sleep = 1 ;Minutes

Opt('TrayMenuMode', 1)
TraySetState(2)

$hGUI = GUICreate('Questions', 250, 300)

$iStatus_Lbl = GUICtrlCreateLabel('', 20, 270, 210, 30)
GUICtrlSetColor(-1, 0xFF0000)

_Questions_SetRandom()

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case 0
            ContinueLoop
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aQuestion_Bttn[1] To $aQuestion_Bttn[9]
            If GUICtrlRead($nMsg) = $sCorret_Answer Then
                TraySetState(1)
                GUISetState(@SW_HIDE)
                Sleep(1000 * 60 * $iCrctAnswr_Sleep)
                GUISetState(@SW_SHOW)
                TraySetState(2)
            Else
                $iTimer = TimerInit()
                AdlibRegister('_Status_Timer', 1000)
                _Status_Timer()

                _Questions_SetState($GUI_DISABLE)
                Sleep(1000 * 60 * $iInCrctAnswr_Sleep)
                _Questions_SetState($GUI_ENABLE)

                AdlibUnRegister('_Status_Timer')
                GUICtrlSetData($iStatus_Lbl, '')
            EndIf

            _Questions_SetRandom()
    EndSwitch
WEnd

Func _Status_SetData($sData)
    If GUICtrlRead($iStatus_Lbl) <> $sData Then
        GUICtrlSetData($iStatus_Lbl, $sData)
    EndIf
EndFunc

Func _Status_Timer()
    _Status_SetData('Неверный ответ, до нового вопроса осталось: ' & (($iInCrctAnswr_Sleep * 60) - Round(TimerDiff($iTimer) / 1000)) & ' сек.')
EndFunc

Func _Questions_SetRandom()
    Local Static $fFirst = True
    Local Static $iLast_Random

    Local $iRandom

    Do
        $iRandom = Random(0, UBound($aData) - 1, 1)
    Until $iRandom <> $iLast_Random

    $iLast_Random = $iRandom

    Local $sQuestion = StringRegExpReplace($aData[$iRandom], '(?s)Вопрос \d+\r?\n([^\r\n]+).*', '\1')
    Local $aQuestions = StringSplit(StringStripCR(StringRegExpReplace($aData[$iRandom], '(?s).*?Ответы:\r?\n(.*?)\r?\nПравильный:.*', '\1')), @LF)

    $sCorret_Answer = StringRegExpReplace($aData[$iRandom], '(?s).*?\r?\nПравильный:\r?\n([^\r\n]+)', '\1')

    If $fFirst Then
        $fFirst = False
        $iQuestion_Lbl = GUICtrlCreateLabel('', 20, 20, 200, 20)

        For $i = 1 To 9
            $aQuestion_Bttn[$i] = GUICtrlCreateButton('', 20, $i * 40, 200, 20)
            GUICtrlSetState($aQuestion_Bttn[$i], $GUI_HIDE)
        Next
    EndIf

    GUICtrlSetData($iQuestion_Lbl, $sQuestion)

    For $i = 1 To 9
        GUICtrlSetData($aQuestion_Bttn[$i], '')
        GUICtrlSetState($aQuestion_Bttn[$i], $GUI_HIDE)
    Next

    For $i = 1 To $aQuestions[0]
        GUICtrlSetData($aQuestion_Bttn[$i], $aQuestions[$i])
        GUICtrlSetState($aQuestion_Bttn[$i], $GUI_SHOW)
    Next
EndFunc

Func _Questions_SetState($iState)
    For $i = 1 To 9
        If $aQuestion_Bttn[$i] Then
            GUICtrlSetState($aQuestion_Bttn[$i], $iState)
        EndIf
    Next
EndFunc
Содержимое файла txt - выглядит вот так:
Вопрос 1
Сколько длятся сутки?
Ответы:
Они длятся 23 часа
Они длятся 20 часов
Они длятся 25 часов
Они длятся 24 часа
Ни один из ответов
Правильный:
Они длятся 24 часа


Вопрос 2
Сколько минут в часе?
Ответы:
В часе 50 минут
В часе 60 минут
В часе 40 минут
Ни один из ответов
Правильный:
В часе 60 минут


Вопрос 3
Сколько времени показано на картинке?
Адрес:
C:\папка с картинками\1.jpg
Ответы:
1 час 50 минут
7 часов 15 минут
12 часов 10 минут
Ни один из ответов
Правильный:
7 часов 15 минут

Что я ожидаю от выполненных действии?
Ответ

Чтобы картинка по адресу из txt -подгружалась на форму.

Что происходит на самом деле?
Ответ - опишите подробнее что происходит

Сейчас ничего не происходит.
Не знаю как заставить эту форму - учитывать наличие картинки в txt.
 

Вложения

  • Тест.au3
    3.4 КБ · Просмотры: 0
  • Тестовые вопросы и ответы.txt
    547 байт · Просмотры: 0

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
GuiCtrlCreatePic
GuiCtrlSetImage
 
Верх