Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Nummerierungs-Index abfragen (https://www.delphipraxis.net/134971-nummerierungs-index-abfragen.html)

TheMiller 2. Jun 2009 14:03


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:
A. Test1
B. Test2
   1. Test3
   2. Test4
A. Test5 //<----- Hier beginnt er wieder bei A, statt bei C
Nun habe ich mir gedacht, den letzten Index (B.) auszulesen und dann mit wNumberingstart, den Index+1 zu setzen.

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: Post

Vielen Dank im Voraus

Satty67 2. Jun 2009 14:22

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).

TheMiller 2. Jun 2009 14:23

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...

Lannes 3. Jun 2009 00:25

Re: Nummerierungs-Index abfragen
 
Hallo,

Zitat:

Zitat von DJ-SPM
... Nun habe ich mir gedacht, den letzten Index (B.) auszulesen und dann mit wNumberingstart, den Index+1 zu setzen...
...Vielleicht habe ich auch nur eine Eigenschaft übersehen. ...

denke das Du damit auf dem richtigen Weg bist, glaube nicht das Du eine Eigenschaft übersehen hast.

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:
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
In Pseudo-Code für Zeile 10:
-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

TheMiller 3. Jun 2009 00:29

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