Seite 1 von 1

EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 01.07.2018 11:42
von Ghosty1967
Hallo zusammen...
ich suche eine Möglichkeit den Index der ersten und den Index der letzten "sichtbaren Zeile" in einem EditorGadgert zu ermitteln.
Ich habe im CodeArchiv und in der WinAPI leider nichts finden können. Hab ich da was übersehen...hat einer einen Tipp

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 01.07.2018 11:52
von Bisonte
also mit

Code: Alles auswählen

SendMessage_(GadgetID(EditorGadget), #EM_GETFIRSTVISIBLELINE, 0, 0)
bekommt man die erste sichtbare zeile

Edit : Quelle -> https://docs.microsoft.com/de-de/window ... isibleline

Evt muss man die letzte Zeile aus grösse des fonts und Zeilenhöhe und Grösse des gadgets errechnen... so als anhaltspunkt...

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 01.07.2018 16:44
von Shardik
Hast Du Dir schon einmal dieses Beispiel von Seymour Clufley aus dem englischen Forum angeschaut? Der Link funktioniert möglicherweise zunächst nicht korrekt, weil er "../english/.." fälschlicherweise in "../blogenglish/.." konvertiert, was zu einem "404 Not found" führt. In diesem Fall musst Du in den entsprechenden Karteireiter im Browser wechseln und "blog" händisch entfernen, denn dann funktioniert der Link... /:->

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 02.07.2018 06:57
von Ghosty1967
Ersteinmal Danke für die Tipps...
Allerdings komme ich immer noch nicht klar. Ich möchte "nur", daß das linke EditorGadget genause scrollt
wie das rechte. Das muss doch gehen.
Ich habe hier mal einen Ansatz von mir gepostet. Vielleicht könnt ihr mir da weiterhelfen warum das nicht
funktioniert. Wo ist denn da mein Denkfehler?

Code: Alles auswählen

Enumeration
  #WIN_INTERFACE
  #EDT_LEFT
  #EDT_RIGHT
EndEnumeration

If OpenWindow(#WIN_INTERFACE, 0, 0, 500, 300, "EditorGadget Scrolltest", #PB_Window_SystemMenu)
  ;Linkes EditorGadget erstellen und Eigenschaften setzen
  EditorGadget    (#EDT_LEFT ,   5,   5, 245, 290, #PB_Editor_ReadOnly)
    SetGadgetColor(#EDT_LEFT , #PB_Gadget_BackColor , $DEDEDE)                        ;Hintergrundfarbe setzen
    SetGadgetColor(#EDT_LEFT , #PB_Gadget_FrontColor, $A0A0A0)                        ;Schriftfarbe setzen
    SendMessage_  (GadgetID(#EDT_LEFT), #EM_SHOWSCROLLBAR, #SB_VERT, #False)          ;Vertikalen Scrollbalken "verstecken"
  ;Rechtes EditorGadget erstellen und Eigenschaften setzen
  EditorGadget    (#EDT_RIGHT, 250,   5, 240, 290)
  
  ;EditorGadgets mit einfachem Text füllen"
  For row = 1 To 100
    AddGadgetItem(#EDT_LEFT , -1, "LINE: " + RSet(Str(row), 3, "0"))
    AddGadgetItem(#EDT_RIGHT, -1, "LINE: " + RSet(Str(row), 3, "0"))
  Next row
  
  Repeat
    Event.l = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #EDT_RIGHT
            ;Erste "sichtbare Zeile" des rechten EditorGadgets ermitteln
            fLine.l = SendMessage_(GadgetID(#EDT_RIGHT), #EM_GETFIRSTVISIBLELINE, 0, 0)
            Debug fLine
            ;Erste "sichtbare Zeile" des linken EditorGadgets setzen
            SendMessage_(GadgetID(#EDT_LEFT), #EM_LINESCROLL, 0, fLine)
        EndSelect
    EndSelect    
  Until Event = #PB_Event_CloseWindow
EndIf  

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 02.07.2018 09:36
von Shardik
Hast Du schon einmal dieses Beispiel von netmestro aus dem englischen Forum ausprobiert, das mit Hilfe eines Callbacks das Scrolling in zwei EditorGadgets synchronisiert?

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Verfasst: 02.07.2018 10:44
von Ghosty1967
DAS ist aber sowas von ganz genau was ich brauche...SUPER, dankeschön
aber wieso habe ich das nicht gefunden...ich hab echt im deutschen, englischem und sogar im französischem Forum gesucht /:->