![]() |
Nummerierungs-Index abfragen
Hallo
ich arbeite seit einiger Zeit an einer schlichten Aufzählung in einer RichEdit-Komponente. Ich hatte soviele Probleme damit, dass ich die erste funktionierende Aufzählung dazu verwenden werde, aufzuzählen, welche Probleme ich alle hatte :wink: Nun Spaß bei Seite. Sie funktioniert schon recht gut, man kann sie komfortabel bedienen (ungefähr so wie in Word), nur mein Problem ist, dass die Nummerierung ihren Index "vergisst", wenn ich von einer tieferen in eine höhere Ebene komme und weitermachen will. Bsp:
Code:
Nun habe ich mir gedacht, den letzten Index (B.) auszulesen und dann mit wNumberingstart, den Index+1 zu setzen.
A. Test1
B. Test2 1. Test3 2. Test4 A. Test5 //<----- Hier beginnt er wieder bei A, statt bei C Aber ich komme an diesen nicht ran. Sogar wenn ich mir den Zeilentext in einem ShowMessage anzeigen lasse, kommt nur das, was hinter dem Index steht (Test2). Sonst könnte ich ja auch mit Copy&Pos arbeiten. Vielleicht habe ich auch nur eine Eigenschaft übersehen. Bitte um Hilfe! PS: Ich habe einen Thread aufgemacht, da ich hier eine spezielle Frage (Wie komme ich an den Index) zur Aufzählung habe. Den "Verlauf" oder den OriginalPost kann man hier finden: ![]() Vielen Dank im Voraus |
Re: Nummerierungs-Index abfragen
// Vieleicht kannst Du noch kurz reinschreiben, dass es sich um eine RichEdit bzw. RichText-Format Aufzählung handelt. Hab' da eine Weile gelesen und ständig an eine Delphi-Aufzählung gedacht (mit entsprechender Verwirrung).
|
Re: Nummerierungs-Index abfragen
Oh sorry. ich bin so tief in der Materie drin, dass ich das grad vorausgesetzt habe... ich werde den Beitrag editieren...
|
Re: Nummerierungs-Index abfragen
Hallo,
Zitat:
Wenn Du wNumberingstart jeweils + 1 setzt, kannst Du wNumberingstart der letzten Zeile auch wieder ermitteln, das stellt sich doch dann(wenn Du wNumberingstart erhöht hast) so dar:
Code:
In Pseudo-Code für Zeile 10:
keine Nummerierung: wNumbering = 0, dxStartIndent = 0
A. wNumberingStart = 1, dxStartIndent = 200 B. wNumberingStart = 2, dxStartIndent = 200 keine Nummerierung: wNumbering = 0, dxStartIndent = 0 A. wNumberingStart = 1, dxStartIndent = 200 B. wNumberingStart = 2, dxStartIndent = 200 I. wNumberingStart = 1, dxStartIndent = 400 II. wNumberingStart = 2, dxStartIndent = 400 III. wNumberingStart = 3, dxStartIndent = 400 ?. wNumberingStart = ?, dxStartIndent = 200 -suche rückwärts bis Zeile(Absatz) mit dxStartIndent = 200 gefunden -lese wNumberingStart -setze Zeile(Absatz) mit wNumberingStart + 1 -Abbruch wenn dxStartIndent < 200 -dann setze wNumberingStart = 1 |
Re: Nummerierungs-Index abfragen
Hi,
die wNumberingStart ist immer "1", wenn eine Ebene bei "1" begonnen hat - egal wie viele Unterpunkte noch existieren. Daher mache ich jetzt folgendes: Ich speicher das RTF in einen StringStream, parse mit RegExpr die Nummerierungen und schaue, in welche Ebene ich zuletzt war und fange dann eine neue Nummerierung mit "NumberingStart = LetzteEbeneVonRegExpr+1"... Umständlich, aber MS scheint dafür keine property in der API zu haben. Im RTF scheint es sie nämlich zu geben ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz