AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Nummerierungs-Index abfragen

Ein Thema von TheMiller · begonnen am 2. Jun 2009 · letzter Beitrag vom 2. Jun 2009
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Nummerierungs-Index abfragen

  Alt 2. Jun 2009, 13:03
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

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
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Nummerierungs-Index abfragen

  Alt 2. Jun 2009, 13:22
// 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).
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Nummerierungs-Index abfragen

  Alt 2. Jun 2009, 13:23
Oh sorry. ich bin so tief in der Materie drin, dass ich das grad vorausgesetzt habe... ich werde den Beitrag editieren...
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: Nummerierungs-Index abfragen

  Alt 2. Jun 2009, 23:25
Hallo,

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
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Nummerierungs-Index abfragen

  Alt 2. Jun 2009, 23:29
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz