Moin, moin, ...
nachfolgender Code behebt zwar nicht Dein Problem mit dem Setzen der ScrollPosition, aber Du hattest ja auch nicht geschrieben was Du eigentlich mit Deinem kleinen Proggy wolltest.
Also bin ich mal davon ausgegangen, dass es Dir darum ging das Suchergebnis von Leo zu zentrieren.
Durch HeXOR bin ich auf die Idee gekommen, die Tabelle mit dem Suchergebnis einfach aus dem HTML-Code aus zuschneiden und alleine für sich anzuzeigen.
Die Ausgabe ist zwar nicht mehr besonders schick, da sämtliche Styles fehlen, aber vielleicht reicht's Dir ja.
Code: Alles auswählen
Global leo$ = "http://dict.leo.org/ende?lang=de&lp=ende&search="
Procedure.s LeoErgebnisAusschneiden(HTMLCode.s)
Protected n, TableTagPos.i = 1, InputTag1.i, InputTag2.i
HTMLCode = Mid(HTMLCode, FindString(UCase(HTMLCode),">WERBUNG</A>",1)+10)
HTMLCode = Mid(HTMLCode, FindString(UCase(HTMLCode),"</TABLE>",1)+10)
If FindString(LCase(HTMLCode),">kein wörterbucheintrag vorhanden<",1)
; Kein Suchergebnis gefunden
HTMLCode = Mid(HTMLCode, FindString(UCase(HTMLCode),"<TABLE",1))
HTMLCode = Left(HTMLCode, FindString(UCase(HTMLCode),"</TABLE>",1)+7)
Else
; Ergebnis wurde gefunden
HTMLCode = Mid(HTMLCode, FindString(UCase(HTMLCode),"</TABLE>",1)+10)
For n = 1 To 6
TableTagPos = FindString(UCase(HTMLCode),"</TABLE>",TableTagPos)+7
Next n
HTMLCode = Left(HTMLCode, TableTagPos)
InputTag1 = FindString(UCase(HTMLCode),"<INPUT",1)-1
InputTag2 = FindString(UCase(HTMLCode),"</TD>",InputTag1)-1
HTMLCode = Left(HTMLCode, InputTag1) + " " + Mid(HTMLCode, InputTag2)
EndIf
ProcedureReturn HTMLCode
EndProcedure
Procedure DummyWebCallBack()
; Hier könntest Du bei Bedarf auf eine User-Navigation reagieren
EndProcedure
Procedure zeige_internet(Suche$)
Protected x, Event, IFenster, SuchText, SuchKnopf, Search$, Seite
Protected Breite = 600, Hoehe = 500
Protected HTMLCode.s, TableTagPos.i
IFenster = OpenWindow(#PB_Any, 0, 0, Breite, Hoehe, "Suche nach:", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
WindowBounds(IFenster,400,400,#PB_Ignore,#PB_Ignore)
AddKeyboardShortcut(IFenster, #PB_Shortcut_Return, 77)
SuchText = StringGadget(#PB_Any, 3, 3, WindowWidth(IFenster) -91, 28, Suche$)
SuchKnopf = ButtonGadget(#PB_Any, WindowWidth(IFenster) -85, 3, 83, 28, "Search")
Search$ = leo$ + Suche$
DummyWebGadget = WebGadget(#PB_Any, -100, 0, 90, 90, Search$)
Seite = WebGadget(#PB_Any, 0, 35, Breite-2, Hoehe-37, "")
SetGadgetAttribute(Seite, #PB_Web_NavigationCallback, @DummyWebCallBack())
; Warten bis die Seite fertig geladen wurde
While GetGadgetAttribute(DummyWebGadget, #PB_Web_Busy) : WindowEvent() : Wend
; Die Events einfach abzufangen ist natürlich etwas unsauber ... solltest Du anders lösen
; Nach dem Ausschneiden der Tabelle mit den Ergebnissen wird der HTML-Code in das sichtbare Gadget geschrieben
SetGadgetItemText(Seite, #PB_Web_HtmlCode, LeoErgebnisAusschneiden(GetGadgetItemText(DummyWebGadget, #PB_Web_HtmlCode)))
SetActiveGadget(SuchText)
Repeat
Event=WaitWindowEvent()
EventGadget = EventGadget()
If Event = #PB_Event_Menu And EventMenu() = 77
Event = #PB_Event_Gadget
EventGadget = SuchKnopf
EndIf
If Event = #PB_Event_Gadget
Select EventGadget
Case SuchText
Case SuchKnopf
Search$ = leo$ + GetGadgetText(SuchText)
SetGadgetText(DummyWebGadget, Search$)
Delay(100)
While GetGadgetAttribute(DummyWebGadget, #PB_Web_Busy) : WindowEvent() : Wend
; Hier abermals die unsaubere Event-Lösung ... solltest Du wie gesagt was dran ändern
SetGadgetItemText(Seite, #PB_Web_HtmlCode, LeoErgebnisAusschneiden(GetGadgetItemText(DummyWebGadget, #PB_Web_HtmlCode)))
SetActiveGadget(SuchText)
EndSelect
ElseIf Event = #PB_Event_SizeWindow; Fenstergröße wurde geändert
ResizeGadget(SuchText, #PB_Ignore, #PB_Ignore, WindowWidth(IFenster) -91, #PB_Ignore)
ResizeGadget(SuchKnopf, WindowWidth(IFenster) -85, #PB_Ignore, #PB_Ignore, #PB_Ignore)
ResizeGadget(Seite, #PB_Ignore, #PB_Ignore, WindowWidth(IFenster) -2, WindowHeight(IFenster) - GadgetY(Seite)-2)
EndIf
Until Event = #PB_Event_CloseWindow
; x = GetGadgetAttribute(Seite, #PB_Web_ScrollX)
; Debug x
CloseWindow(IFenster)
EndProcedure
zeige_internet("affe")
PL.