Help with bullet changes via code

  • I have a set of paragraphs like this:

    Code
    1. one   a) two2. three\ls1\ilvl2{\listtext 1.\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par\ls1\ilvl3{\listtext\fs22 a)\tab}\li720\plain\f0\fs22\cf0 two\par\ls1\ilvl2{\listtext\fs22 2.\tab}\li360\plain\f0\fs22\cf0 three\par


    I'm needing to change a bullet in code, but I can't get it to work properly. As an example if I loop through these paragraphs and simply get the number style of the the paragraph and then set it to the same value, the result comes out as:

    Code
    1. one
       b) two
    3. three
    
    
    \ls1\ilvl0{\listtext 1.\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par
    \ls2\ilvl0{\listtext\fs22 b)\tab}\li720\plain\f0\fs22\cf0 two\par
    \ls1\ilvl0{\listtext\fs22 3.\tab}\li360\plain\f0\fs22\cf0 three\par


    What am I missing? I even tried to set the number level to the same thing, and all paragraphs come out as level 0.

    Eric

    • Offizieller Beitrag

    I made a quick test:

    Maybe the definition for the list override is missing in your code.

  • Hmmm... pretty sure it is there. Here is the complete before and after:
    Before:

    Code
    {\rtf1\ansi\deff0\uc1\ansicpg1252\deftab720{\fonttbl{\f0\fnil\fcharset1 Arial;}{\f1\fnil\fcharset2 Symbol;}{\f2\fnil\fcharset2 Symbol;}{\f3\fnil\fcharset2 Wingdings;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red128\green0\blue128;\red128\green0\blue0;\red0\green255\blue0;\red0\green255\blue255;\red0\green128\blue128;\red0\green0\blue128;\red255\green255\blue255;\red192\green192\blue192;\red128\green128\blue128;\red0\green0\blue0;\red205\green92\blue92;\red233\green150\blue122;\red178\green34\blue34;\red255\green69\blue0;\red255\green165\blue0;\red245\green222\blue179;\red210\green180\blue140;\red139\green69\blue19;\red238\green232\blue170;\red240\green230\blue140;\red189\green183\blue107;\red255\green215\blue0;\red192\green220\blue192;\red154\green205\blue50;\red128\green128\blue0;\red85\green107\blue47;\red166\green202\blue240;\red176\green196\blue222;\red70\green130\blue180;\red106\green90\blue205;\red72\green61\blue139;\red250\green235\blue215;\red112\green128\blue144;\red47\green79\blue79;\red1\green1\blue1;\red79\green98\blue40;\red36\green64\blue97;\red38\green38\blue38;\red247\green150\blue70;\red155\green187\blue89;\red255\green153\blue0;\red153\green0\blue0;\red148\green138\blue84;\red0\green112\blue192;\red217\green149\blue148;\red63\green81\blue124;}\wpprheadfoot1\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\headery720\footery720\endnhere\sectdefaultcl{\*\generator WPTools_5.500;}{\*\listtable{\list\listtemplateid1{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc1\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers \'01;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc3\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers \'01;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc0\levelstartat1{\leveltext\'02\'02.;}{\levelnumbers \'01;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc4\levelstartat1{\leveltext\'02\'03);}{\levelnumbers \'01;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc2\levelstartat1{\leveltext\'03(\'04);}{\levelnumbers \'02;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc4\levelstartat1{\leveltext\'03(\'05);}{\levelnumbers \'02;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc0\levelstartat1{\leveltext\'03(\'06);}{\levelnumbers \'02;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc0\levelstartat1{\leveltext\'03(\'07);}{\levelnumbers \'02;}}{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc0\levelstartat1{\leveltext\'03(\'08);}{\levelnumbers \'02;}}\listid1}{\list\listtemplateid2\listsimple{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc23\levelstartat1{\leveltext\'02·\'00;}{\levelnumbers \'02;}\f2}\listid2}}{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}{\ls1\ilvl2{\listtext 1.\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par\ls1\ilvl3{\listtext\fs22 a)\tab}\li720\plain\f0\fs22\cf0 two\par\ls1\ilvl2{\listtext\fs22 2.\tab}\li360\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par\ls2\ilvl0{\listtext\f2\fs22 \'B7\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par{\listtext\f2\fs22 \'B7\tab}\plain\f0\fs22\cf0 two\par{\listtext\f2\fs22 \'B7\tab}\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par\ls1\ilvl2{\listtext\fs22 1.\tab}\pnstart1\li360\fi-360\plain\f0\fs22\cf0 one\par\ls1\ilvl3{\listtext\fs22 a)\tab}\li720\plain\f0\fs22\cf0 two\par\ls1\ilvl2{\listtext\fs22 2.\tab}\li360\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par}}

    After:

    Code
    {\rtf1\ansi\deff0\uc1\ansicpg1252\deftab720{\fonttbl{\f0\fnil\fcharset1 Arial;}{\f1\fnil\fcharset2 Symbol;}{\f2\fnil\fcharset2 Symbol;}{\f3\fnil\fcharset2 Wingdings;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red128\green0\blue128;\red128\green0\blue0;\red0\green255\blue0;\red0\green255\blue255;\red0\green128\blue128;\red0\green0\blue128;\red255\green255\blue255;\red192\green192\blue192;\red128\green128\blue128;\red0\green0\blue0;\red205\green92\blue92;\red233\green150\blue122;\red178\green34\blue34;\red255\green69\blue0;\red255\green165\blue0;\red245\green222\blue179;\red210\green180\blue140;\red139\green69\blue19;\red238\green232\blue170;\red240\green230\blue140;\red189\green183\blue107;\red255\green215\blue0;\red192\green220\blue192;\red154\green205\blue50;\red128\green128\blue0;\red85\green107\blue47;\red166\green202\blue240;\red176\green196\blue222;\red70\green130\blue180;\red106\green90\blue205;\red72\green61\blue139;\red250\green235\blue215;\red112\green128\blue144;\red47\green79\blue79;\red1\green1\blue1;\red79\green98\blue40;\red36\green64\blue97;\red38\green38\blue38;\red247\green150\blue70;\red155\green187\blue89;\red255\green153\blue0;\red153\green0\blue0;\red148\green138\blue84;\red0\green112\blue192;\red217\green149\blue148;\red63\green81\blue124;}\wpprheadfoot1\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\headery720\footery720\endnhere\sectdefaultcl{\*\generator WPTools_5.500;}{\*\listtable{\list\listtemplateid1\listsimple{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers \'01;}}\listid1}{\list\listtemplateid2\listsimple{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc4\levelstartat1{\leveltext\'02\'00);}{\levelnumbers \'01;}}\listid2}{\list\listtemplateid3\listsimple{\listlevel\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent360\levelnfc23\levelstartat1{\leveltext\'02·\'00;}{\levelnumbers \'02;}\f2}\listid3}}{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}{\ls1\ilvl0{\listtext 1.\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par\ls2\ilvl0{\listtext\fs22 b)\tab}\li720\plain\f0\fs22\cf0 two\par\ls1\ilvl0{\listtext\fs22 3.\tab}\li360\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par\ls3\ilvl0{\listtext\f2\fs22 \'B7\tab}\li360\fi-360\plain\f0\fs22\cf0 one\par{\listtext\f2\fs22 \'B7\tab}\plain\f0\fs22\cf0 two\par{\listtext\f2\fs22 \'B7\tab}\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par\ls1\ilvl0{\listtext\fs22 1.\tab}\pnstart1\li360\fi-360\plain\f0\fs22\cf0 one\par\ls2\ilvl0{\listtext\fs22 b)\tab}\li720\plain\f0\fs22\cf0 two\par\ls1\ilvl0{\listtext\fs22 3.\tab}\li360\plain\f0\fs22\cf0 three\par\pard\plain\plain\f0\fs22\cf0\par}}


    Perhaps it is the way I'm looping thru the paragraphs? I'm not doing the typical firstpar, next until nil, but I'm instead using the following:

    Code
    pWPRichText.AttrHelper.Clear;  pWPRichText.ReformatAll(true, false);  if pWPRichText.SelLength <= 0 then    pWPRichText.SelectAll;        pWPRichText.TextCursor.CallForSelectedText(          pWPRichText,      // Sender          [],               // TWPCallForSelectedTextOptions          MyChangeBullet,   // TWPParCallback          nil,              // TWPCharAttrCallback          nil,              // TWPCharCallback          nil               // TWPTextObjectCallback        );


    MyChangeBullet test code does this:

    Code
    if par.IsNumbered then
      begin
        par.GetNumberStyleEx(vNumLevel, vSkipNumber, vNumberingStyle);
        if (vNumberingStyle <> nil) then
        begin
          pNumberStyle := vNumberingStyle.Style;
          par.ASet(WPAT_NumberSTYLE, Integer(pNumberStyle));
        end;
      end;


    I can try the first, next, until nil loop to see if that makes any difference.

    Eric