EditorGadget erste & letzte sichtbare Zeile ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ghosty1967
Beiträge: 203
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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...
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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... /:->
Benutzeravatar
Ghosty1967
Beiträge: 203
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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  
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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?
Benutzeravatar
Ghosty1967
Beiträge: 203
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Re: EditorGadget erste & letzte sichtbare Zeile ermitteln

Beitrag 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 /:->
Antworten