;-- TIME_STAMP 2020-11-19 16:14:01 v 0.1 Opt('MustDeclareVars', 1) #include "OperaEmbedded.au3" Global $ghMain, $ginName, $ginScore, $gbtNewScore, $gbtClose Global $sScriptJS, $sStyle, $gsHtml $ghMain = GUICreate('Bsp. Bedingte Formatierung', 800, 600) GUICtrlCreateLabel('Ändern von Scores für die Tabellenmitglieder / Erfassen neuer Mitglieder. Die Farbwerte wechseln bei folgenden Scores:', 10, 240) GUICtrlCreateLabel("<= [10] sehr armselig, [50] armselig, [250] durchschnittlich, [1250] gut, [>>] sehr gut", 50, 260) GUICtrlCreateLabel('Name', 50, 283, 60) $ginName = GUICtrlCreateInput('', 110, 280, 120, 21) GUICtrlCreateLabel('Score', 250, 283, 60) $ginScore = GUICtrlCreateInput('', 310, 280, 120, 21) $gbtNewScore = GUICtrlCreateButton('Score Eintragen', 50, 320, 120, 25) $gbtClose = GUICtrlCreateButton('Close', 720, 560, 70, 25) ; Embedded Opera Window (mit Border - flag:True, funktioniert nicht immer) _OperaEmbedded_Create($ghMain, 20, 20, -40, 180, True) ; negative Breite/Höhe: Differenz zum Parent-Fenster Breite/Höhe $sScriptJS = _ "function coloring() {" & @CRLF & _ " var scale = [['vPoor', 10], ['poor', 50], ['avg', 250], ['good', 1250]]; // > 1250: 'vGood'" & @CRLF & _ " var scores = document.getElementsByClassName('score');" & @CRLF & _ " var score, cls;" & @CRLF & _ " for (var i = 0; i < scores.length; i++) {" & @CRLF & _ " cls = 'vGood'" & @CRLF & _ " score = parseInt(scores[i].innerHTML);" & @CRLF & _ " for (var j = 0; j < scale.length; j++) {" & @CRLF & _ " if (score <= scale[j][1]) {" & @CRLF & _ " cls = scale[j][0];" & @CRLF & _ " break;" & @CRLF & _ " }" & @CRLF & _ " }" & @CRLF & _ " scores[i].classList.add(cls);" & @CRLF & _ " }" & @CRLF & _ "};" & @CRLF $sStyle = _ "table { width: 20em; }" & @CRLF & _ "#score { width: 50%; }" & @CRLF & _ "#name { width: 50%; }" & @CRLF & _ "th { border-bottom: 2px solid #000; padding: 0.5em 0 0.1em 0; font-size: 1.2em; }" & @CRLF & _ "td { border-bottom: 2px solid #ccc; padding: 0.5em 0 0.1em 0; }" & @CRLF & _ "th:nth-child(even),td:nth-child(even) { text-align: center; }" & @CRLF & _ ".vGood { background-color: #9f0; }" & @CRLF & _ ".good { background-color: #cf0; }" & @CRLF & _ ".avg { background-color: #fd0; }" & @CRLF & _ ".poor { background-color: #fa0; }" & @CRLF & _ ".vPoor { background-color: #f30; }" & @CRLF $gsHtml = _ '' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ ' ' & @CRLF & _ '
NameScore
Paul5
Maria60
Peter35
Simone289
Klaus1020
Jutta5648
' & @CRLF & _ '' & @CRLF ; Style und JS brauchen nur einmal geladen werden. Bei Änderungen im Inhalt erneut aufrufen mit: _OperaEmbedded_CreateHtml("Html-Neu") _OperaEmbedded_CreateHtml($gsHtml, $sStyle, $sScriptJS) GUISetState(@SW_SHOW, $ghMain) _OperaEmbedded_RefreshView() While True Switch GUIGetMsg() Case -3, $gbtClose Exit Case $gbtNewScore _ChangeScore(GUICtrlRead($ginName), GUICtrlRead($ginScore)) EndSwitch WEnd Func _ChangeScore($_Name, $_newScore) If $_Name = '' Then Return MsgBox(48, 'Achtung', 'Es wurde kein Name eingetragen!') If $_newScore = '' Then Return MsgBox(48, 'Achtung', 'Es wurde kein Score eingetragen!') Local $sCap = StringUpper(StringLeft($_Name, 1)) $_Name = StringRegExpReplace($_Name, '^.', $sCap) Local $sNewTR = StringFormat('%s%d', $_Name, $_newScore) $gsHtml = StringRegExpReplace($gsHtml, '(?i)' & $_Name & '\d*', $sNewTR, 1) If @extended = 0 Then ; neuer Spieler $gsHtml = StringReplace($gsHtml, ' ', ' ' & $sNewTR & @CRLF & ' ') EndIf _OperaEmbedded_CreateHtml($gsHtml) _OperaEmbedded_RefreshView() EndFunc