AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Richedit Zeilenweise scrollen die zweite

Ein Thema von Memnarch · begonnen am 7. Feb 2011 · letzter Beitrag vom 2. Apr 2020
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

Richedit Zeilenweise scrollen die zweite

  Alt 7. Feb 2011, 13:21
Tag allerseits.
Hab mal nen altes projekt von mir ausgegraben(das Trichedit projekt ).

Soweit klapt inziwschen alles fehlerlos(doublebuffering, zusaätzliche gimmicks^^ etc).
Nun häng ich aber noch am scrollen fest. Da ich ja von einem richedit, den inhalt erst auf einer bitmap zusammensetze und dann die benötigten teile auf das richedit zeichne, muss ich die aktuelle scrollposition ermitteln können.(nur zeilenweise scrollen)

Bisher hatte ich es so gemacht, das ich mir per EM_GETFIRSTVISIBLELINE die erste sichtbare zeile geholt habe und mit der Zeilenhöhe multipliziert hatte.(Zeilenhöhe hatte ich am anfang manuel kalkuliert). Das klappte auch super. Durch das modigizieren der WMVScroll procedure ist es mir auch gelungen, dass nurnoch zeilenweise gescrolled wird, wen man den regler per maus zieht, und eben nichtmehr pixelweise bzw fein gescrolled wird.

Leider bleibt nochimmer ein Problem: Fettgedruckter Text oder Kursiver(Alles selber Font), verändern die zeilenhöhe für ihre jeweilige zeile, weshalb meine errechnete Zeilenhöhe nicht mehr übereinstimmt.(Sie variiert nun bei normalem/fettgedrucktem und kursivtext >.<).

Soetwas wie "Gib mir die PixelPosition der ersten sichtbaren zeile", wäre was ich gebrauchen könnte

Hat da jemand ne Idee?

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#2

AW: Richedit Zeilenweise scrollen die zweite

  Alt 16. Feb 2011, 10:12
Moinsen alle miteinander.
Habe noch ein Problem.

Undzwar möchte ich Horizontalen scrollen Buchstabenweise scrollen. Und hier bekomme ich ein problem:

Die richtige Position der Scrollbar rauszufindens cheint fast undmöglich >.<.

WM_HSCROLL Löst aus wenn ich die ThumbBar ziehe oder auf die Pfeile klicke, übermittelt aber NUR die Position(welche nur dan aktualisiert wird, wenn man mit dem ziehen fertig ist) und wird auch NICHT ausgelößt, wen das richedit automatisch nach rechts scrolled(wen der cursor dabei ist den Bildschirmrand zu verlassen).

GetScrollInfo liefert mir zwar nPos und nTrackPos, aber es ist "schwierig" herauszufinden, ob man gerade die Thumbbar zieht oder die Position genutzt werden soll. Außerdem müsste GetScrollInfo noch in einem sinnvollen MessageHandler gepackt werden(WM_HSCroll löst ja beim autoscrollen nicht aus o.O).

Ich möchte doch nur die verdaamte position der Scrollbar und es ist als ob ich dazu einmal um den Gesamten erdball laufen muss(rechtsrum), obwohl ein schrit nach Links mich zum selben ziehl führen würde >.<


MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Richedit Zeilenweise scrollen die zweite

  Alt 16. Feb 2011, 11:27
Buchstabenweise scrollen
vergiss es, es sei denn du verwendest einen Font mit festen "Buchstabengrößen", z.B. Courier.
Wenn du mir nicht glaubst,
gib in der ersten Zeile einmal iiiii und in der zweiten WWWWW ein, und dann schnitz Dir aus in welcher Zeile deine "Buchstabenreferenz" ist.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#4

AW: Richedit Zeilenweise scrollen die zweite

  Alt 16. Feb 2011, 11:31
Whoops, Entschuldige:
Ich benutze nur Fonts mit Fester größe für das projekt^^.
Die info hatte ich komplett vergessen zu schreiben. Mein Fehler.
(Wird ne art mini IDE..und warum? Weil ich bock drauf habe )

PS: Wil halt soviel wie möglich selber machen, um erfahrungen zu sammeln(deswegen kommt auch kein synedit in Frage). Aber wie gesagt, scrollen ist das einzig letzte wirkliche problem.

MFG
Memnarch
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#5

AW: Richedit Zeilenweise scrollen die zweite

  Alt 17. Feb 2011, 23:07
1. Beim Zeichnen auf die Bitmap mußt du doch auch wissen wo die einzelnen Zeilen hinkommen, kannst du nicht dir da die einzelnen Positionen speichern und dann dorthin scrollen?

2. Wenn du nur Buchstabenweise scrollen willst, reicht da nicht die Richtung. Du kannst auch von Thumbbar eine eigene Komponente ableiten die die benötigten Messages feuert. Dann kannst du auch gleich die richtige Position zurückgeben lassen.

Gruß David
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: Richedit Zeilenweise scrollen die zweite

  Alt 21. Feb 2011, 08:23
Naja, das zeichnen auf der Bitmap klappt zwar, allerdings wegen des scrollens manchmal doch nicht so ganz. Vertikal klappts perfekt. Da kann ich mir ja imemr die erste sichtbare Zeile des Richedit geben lassen.

Sich ne eigene Thumbbar zu machen könnte eventuell die lösung sein. EVENTUEL. Den auch dort kann ich die position auslesen. Inziwschen klappt mein Horizontales scrollen per standart scrollbar ganz gut. NUR das klicken auf die Pfeile links u. Rechts wird nicht berücksichtigt. Da werden andere nachrichten geschick.(LINE_RIGHT/LINE_LEFT o.ä. ... nur wo kann ich DIE abfangen? in WMV/WMH_Scroll werden die nicht hingefeuert, die landen woanders).


MFG
Memnarch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz