HTA (Html-приложение) VBScript Чтение строки текстового файла и окрашивание только этой строки

Я работаю над HTA-файлом чата, чтобы поиграть с ним на работе...

:)

Это работает довольно хорошо, но кто-то попросил раскрасить текст каждого человека в свой цвет?

Я пытался получить его, но у меня возникли проблемы, может ли кто-нибудь помочь мне, если это возможно?

ниже приведен основной код того, что я сделал\нашел

я дошел до того, что поместил каждую строку в массив, но затем назначить цвет каждой строке, которую я не могу решить...

OR

если я не могу отобразить «чат» в окнах без использования текстового файла, тогда это было бы хорошо\лучше (сохраняет очистку от удаления ненужных текстовых файлов..)

Пожалуйста, также скажите мне, как улучшить мое кодирование... я не делал этого так долго... (несколько месяцев)

Павлу на здоровье.

' HTA-чат

<HTA:APPLICATION 

     SCROLL="auto"
     SINGLEINSTANCE="yes"
     WINDOWSTATE="normal"
>
</head>

<SCRIPT Language="VBScript">

Sub Window_OnLoad
 Window.ResizeTo 400,300
   iTimerID = window.setInterval("Display", 100)
End Sub

    strPath = "C:\Users\Pavle\Desktop\"
    Set wshShell = CreateObject( "WScript.Shell" )
    strSender = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )


Sub Display
    Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(StrPath & "Chat.txt", 1)

Do Until objFile.AtEndOfStream
    strCharacters = objFile.ReadAll
Loop

 objFile.Close


     DisplayBox.Value = strCharacters

        DisplayBox.ScrollTop = DisplayBox.ScrollHeight


 ' This splits each line.
' sArray = Split(DisplayBox.Value, vbcrlf)

End Sub

Sub InputBox

With document.parentWindow.event
 If .keycode = 13 then
    Const NORMAL_WINDOW = 1

    Const ForAppending = 8

    Set objFSO = CreateObject("Scripting.FileSystemObject")
     Set objTextFile = objFSO.OpenTextFile(StrPath & "Chat.txt", ForAppending, True)
      objTextFile.WriteLine strSender & ":" & Input.Value
       objTextFile.Close


    Input.Value = ""
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{BACKSPACE}"


Else
   .cancelbubble = false
     .returnvalue = true
 End If

End With

End Sub


</SCRIPT>
<body>

<textarea name="DisplayBox" rows="6" cols="40"></textarea>
<BR>
<BR>
<BR>
<textarea name="Input" rows="3" onKeydown=InputBox cols="40"></textarea>
</body>
</html>`

person Pavle Stojanovic    schedule 11.01.2013    source источник


Ответы (1)


Вот несколько рекомендаций для вашей задачи.

Сначала textarea не может иметь HTML, поэтому он может не использовать в качестве подложки для форматированного текста. Для этого вам понадобится <pre> или, скорее, <div>. Например:

<div name="DisplayBox" class="textpad" contenteditable="true"></div>

Затем добавьте теги форматирования для строк при чтении файла. Что-то вроде этого:

Dim n
n = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(StrPath & "Chat.txt", 1)
Do Until objFile.AtEndOfStream
    n = n * (-1)
    strCharacters = strCharacters & "<p class='line" & n & "'>" & objFile.ReadLine() & "</p>"
Loop
objFile.Close
DisplayBox.innerHTML = strCharacters

<p> тоже может быть <div>. Затем вам нужна таблица стилей с некоторыми классами:

.line1 {
    color: red;
}
.line-1 {
    color: blue;
}
.textpad {
    position: relative;
    width: 400px;
    height: 200px;
    border: 2px inset;
    overflow-y: scroll;
}

Теперь у вас есть красные и синие линии в #DisplayBox. Просто настройте div по своему усмотрению.

(Кстати, это был мой первый VBScript...)

person Teemu    schedule 11.01.2013