Hallo
Ich suche schon seit Paar Tagen nach einer Control, in der ich Text mit unterschiedlichen Farben und Schriftarten und Bilder anzeigen lassen kann.
Und wenn dem Text in der Control noch einige Zeilen hinzugefügt werden, soll sie automatisch nach unten scrollen.
Ich habe etwas mit _IECreateEmbedded() angefangen, und es läuft alles eigentlich ganz gut ausser, dass ich sie nicht gescheit scrollen lassen kann.
Ich habe ein kleines Programm gemacht.
Links könnt ihr sehen was ich zum laufen gebracht habe, rechts, wie sie eigentlich scrollen soll.
Spoiler anzeigen
C
#include
#include
Dim $s_WIN_Title = 'Beispiel'
Dim $s_Button_Text = 'Manuell'
Dim $s_Label_1_Text = 'Zeit (1-60):'
Dim $s_Label_2_Text = 'Max. Meldungenanzahl(0-n):'
Dim $i_WIN_Width = @DesktopWidth / 02
Dim $i_WIN_Height = @DesktopHeight / 02
Dim $i_WIN_Left = @DesktopWidth / 04
Dim $i_WIN_Top = @DesktopHeight / 04
Dim $i_Output_1_Width = $i_WIN_Width / 2 - 16
Dim $i_Output_1_Height = $i_WIN_Height - 49
Dim $i_Output_1_Left = 8
Dim $i_Output_1_Top = 8
Dim $i_Output_2_Width = $i_WIN_Width / 2 - 16
Dim $i_Output_2_Height = $i_WIN_Height - 49
Dim $i_Output_2_Left = $i_WIN_Width / 2 + 8
Dim $i_Output_2_Top = 8
Dim $i_Button_Width = 76
Dim $i_Button_Height = 24
Dim $i_Button_Left = $i_WIN_Width - 8 - $i_Button_Width
Dim $i_Button_Top = $i_WIN_Height - 8 - $i_Button_Height
Dim $i_Label_1_Left = 8
Dim $i_Label_1_Top = $i_Output_1_Height + 16
Dim $i_Label_2_Left = 106
Dim $i_Label_2_Top = $i_Output_1_Height + 16
Dim $i_Input_1_Width = 40
Dim $i_Input_1_Height = 20
Dim $i_Input_1_Left = 58
Dim $i_Input_1_Top = $i_Output_1_Height + 16
Dim $i_Input_2_Width = 40
Dim $i_Input_2_Height = 20
Dim $i_Input_2_Left = 244
Dim $i_Input_2_Top = $i_Output_1_Height + 16
Dim $i_CountMSG = 0
Dim $i_MaxMSG = 0
Dim $i_Sleep = 2
Dim $i_Sec, $e_MSG
Dim $o_IE = _IECreateEmbedded()
Dim $h_WIN = GUICreate( $s_WIN_Title, $i_WIN_Width, $i_WIN_Height, $i_WIN_Left, $i_WIN_Top )
Dim $h_Output_1 = GUICtrlCreateObj( $o_IE, $i_Output_1_Left, $i_Output_1_Top, $i_Output_1_Width, $i_Output_1_Height )
Dim $h_Output_2 = GUICtrlCreateEdit( '', $i_Output_2_Left, $i_Output_2_Top, $i_Output_2_Width, $i_Output_2_Height )
Dim $h_Button = GUICtrlCreateButton( $s_Button_Text, $i_Button_Left, $i_Button_Top, $i_Button_Width, $i_Button_Height )
Dim $h_Label_1 = GUICtrlCreateLabel( $s_Label_1_Text, $i_Label_1_Left, $i_Label_1_Top )
Dim $h_Label_2 = GUICtrlCreateLabel( $s_Label_2_Text, $i_Label_2_Left, $i_Label_2_Top )
Dim $h_Input_1 = GUICtrlCreateInput( $i_Sleep, $i_Input_1_Left, $i_Input_1_Top, $i_Input_1_Width, $i_Input_1_Height )
Dim $h_Input_2 = GUICtrlCreateInput( $i_MaxMSG, $i_Input_2_Left, $i_Input_2_Top, $i_Input_2_Width, $i_Input_2_Height )
_IENavigate( $o_IE, 'about:blank' )
GUISetState()
_GetInfo()
While 1
$e_MSG = GUIGetMsg()
Switch $e_MSG
Case $GUI_EVENT_CLOSE
Exit
Case $h_Button
_GetInfo()
EndSwitch
If $i_Sec = @SEC Then _GetInfo()
WEnd
Func _GetInfo()
Local $f_Time, $f_Data_1, $f_Data_2, $f_Result_1, $f_Result_2, $f_Height
$i_Sleep = GUICtrlRead( $h_Input_1 )
$i_MaxMSG = GUICtrlRead( $h_Input_2 )
$f_Time = @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC
$f_Data_1 = Random( 0, 999999999, 1)
$f_Data_2 = Random( 0, 999999999, 1)
$i_CountMSG += 1
$f_Result_1 = _IEDocReadHTML( $o_IE )
$f_Result_1 = $f_Result_1 & ''
$f_Result_1 = $f_Result_1 & '[size=12][color=#ff0000]' & $f_Time & '[/color][/size]
'
$f_Result_1 = $f_Result_1 & '[size=14][color=#00ff00]' & $f_Data_1 & '[/color][/size]
'
$f_Result_1 = $f_Result_1 & '[size=14][color=#0000ff]' & $f_Data_2 & '[/color][/size]
'
$f_Result_1 = $f_Result_1 & '[img]' & $f_Data_1 & $f_Data_2 & '.png[/img] ' & $f_Data_1 & $f_Data_2 & '.png
'
$f_Result_1 = $f_Result_1 & ''
$f_Result_2 = $f_Time & @CRLF
$f_Result_2 = $f_Result_2 & $f_Data_1 & @CRLF
$f_Result_2 = $f_Result_2 & $f_Data_2 & @CRLF
$f_Result_2 = $f_Result_2 & 'Kein Bild moeglich' & @CRLF & @CRLF
If $i_MaxMSG <> 0 Then
If $i_CountMSG > $i_MaxMSG Then
Local $f_Begin, $f_CountFB, $f_StringToDel
While $i_CountMSG > $i_MaxMSG
$f_Begin = StringInStr( $f_Result_1, '' )
$f_CountFB = StringInStr( $f_Result_1, '' ) + 10 - $f_Begin
$f_StringToDel = StringMid( $f_Result_1, $f_Begin, $f_CountFB )
$f_Result_1 = StringReplace( $f_Result_1, $f_StringToDel, '', 1 )
$f_Begin = GUICtrlRead( $h_Output_2 )
$f_CountFB = StringInStr( $f_Begin, @CRLF & @CRLF )
$f_StringToDel = StringLeft( $f_Begin, $f_CountFB + 3 )
$f_Begin = StringReplace( $f_Begin, $f_StringToDel, '', 1 )
$i_CountMSG -= 1
GUICtrlSetData( $h_Output_2, $f_Begin )
WEnd
EndIf
EndIf
GUICtrlSetData( $h_Output_2, $f_Result_2, 1)
_IEDocWriteHTML( $o_IE, $f_Result_1 )
$f_Height = $o_IE.document.body.scrollHeight
$o_IE.document.parentWindow.scrollTo(0, $f_Height)
$i_Sec = @SEC + $i_Sleep
If $i_Sec >= 60 Then $i_Sec -= 60
EndFunc
Alles anzeigen
Hat vielleicht jemand eine Idee, wie man das hinbekommen kann?