IE_Embedded-Control automatisch nach unten scrollen

  • Hallo Commmunity,

    ich habe in einem GUI ein IE_Embedded-Control, dem ich per script immer wieder Text hinzufüge.
    dazu nutze ich

    Code
    _IEDocInsertHTML($oBody, $HTML, "beforeend")

    die neuen Texte erscheinen also immer am unteren Ende und so soll es auch sein. Es klappt also eigentlich alles wie geplant.
    Bis dann irgendwann das Fenster voll ist. Dann wird natürlich die Scrollbar am linken Rand des Controls aktiv, aber der neu angefügte Text wird nicht sofort sichtbar, weil eben nicht ganz nach unten gescrollt ist.

    Ich hätte gerne, dass immer nach dem Einfügen einer neuen Textzeile automatisch nach unten gescroll wird. Ich habe versucht dem Control den Focus zu geben und anschließend mittels 'send' das Drücken der Ende-taste zu simmulieren und ich habe versucht direkt mit

    Code
    ControlSend ( "HF-Chat", "", $oIE, "{END}" )

    die Ende-Taste an das Control zu senden, aber beides ohne Erfolg.

    Jemand eine Idee, wie ich das anstellen muss?

    Gruß
    Nils

    Einmal editiert, zuletzt von Harry.Fox (2. Dezember 2012 um 19:40)

  • Ich habe versucht dem Control den Focus zu geben und anschließend mittels 'send' das Drücken der Ende-taste zu simmulieren und ich habe versucht direkt mit

    [autoit]

    ControlSend ( "HF-Chat", "", $oIE, "{END}" )

    [/autoit]


    die Ende-Taste an das Control zu senden, aber beides ohne Erfolg.


    Dies sollte eigentlich klappen. Nimm aber bei Controlsend

    [autoit]

    ControlSend("HF-Chat", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{End}")

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

    wenn nicht stell (d)ein (Beispiel-)Skript ein.

    mfg autoBert

  • Hallo,

    leider hat dein Tipp nicht funktioniert. Vielleicht mache ich auch etwas ganz anderes falsch.
    Ich programmiere zwar schon viele Jahre in anderen Sprachen, aber das ist mein erstes Skript mit AutoIT

    Bei dem Programm handelt es sich um einen einfachen Chat im LAN mit Server und Client. Die Grundfunktionen laufen auch schon. Jetzt wollte ich ihn ein wenig "aufhübschen" und habe den Client daher von einem einfach Text-Feld zu einem IE-Feld umgebaut (hatte auch mit RichEdit expirimentiert, aber da ich HTML gut kann, ist mir diese Lösung lieber)

    Ich weis, dass es hier schon einige fertige Chats gibt, die alles können was ich will und die ich sicher auch nutzen könnte, aber ich will ja lernen :)

    Angehängt habe ich euch den Server, den Client, die ini-Datei, mein HTML-Grungerüst und das TCP-UDF

    Vielleicht findet ja jemand eine Lösung...

    Wenn das fertig ist, will ich noch einbauen, dass

    • sich jeder eine Schriftfarbe aussuchen kann
    • einfache smilies als Grafik angezeigt werden
    • ein Tooltip bei Nachrichteneingang angezeigt wird, wenn das Fenster grade nicht den Fokus hat

    Wäre echt super, wenn mir bei diesem Detail jemand helfen könnte. Mit dem Textfeld hatte das geklappt, aber mit dem IE leider nicht...

    Gruß
    Nils

  • [autoit]

    $oIE.document.parentwindow.scroll(0, $oIE.document.body.scrollHeight/2)

    [/autoit]

    Für deine anderen Probleme (das oben ist zum Scrollen), schau dir mal Oscars ChatBox UDF an oder meinen ShoutboxClient (schau mal in mein Profil)

  • ... Wobei bei minx' Lösung natürlich noch die Werte angepasst werden müssen.
    Der Syntax lautet:

    [autoit]


    $oIE.document.parentwindow.scroll($iWidth, $iHeight)

    [/autoit]


    $iWidth = 0 stimmt soweit, denn du willst ja nur die Höhenangabe (y) verändern.
    Allerdings bedeutet $oIE.document.body.scrollHeight/2, dass genau bis zur Hälfte gescrollt wird.
    Und wer hätte's gedacht: Einfach das /2 wegmachen, dann wird nach ganz unten gescrollt. :D

    lg chess

  • Danke ihr beiden, dass klappt perfekt!

    Das mit den Farben und den Smilies bekomme ich vermutlich hin. Das mit dem Toolitip ist deshalb ein Probleml, weil ich derzeit noch keine Ahnung habe, wie ich feststellen kann, ob ein GUI aktuell minimiert ist oder nicht, und ob es den Focus hat.

    Wenn dazu jemand noch einen Tipp hätte, wäre das klasse.

    Gruß
    Nils