Hallo
erstmal zum reinen Ablauf: warum machst du dir es sooo kompliziert?
In den Radiobuttonitems steht doch schon alles. das zB. 'ppa.' hast du mind. 3x im code (2xin der If-abfrage und noch 1x im radioitem selbst). und die 3 einzelnen codeblöcke gehen auch in einem einzigen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| TextmarkenName:= 'RB1'; if RadioGroup1.ItemIndex<>-1 then if WordDocument1.Bookmarks.Exists (TextmarkenName) then begin vWhat:=WordDocument1.Bookmarks.Item(TextmarkenName).Range; vWhat.InsertAfter (RadioGroup1.Items[RadioGroup1.ItemIndex]); vWhat.Font.Color := clBlue; end; |
Damit arbeitest du mit den Einträgen innerhalb der Radiogroup, mit einer Änderung dort läuft auch diese proc automatisch, ohne eine Änderung.
zum Fehler: Du fügst mit inserafter immer wieder den Text hinzu, bei jedem Klick. Abhilfe schafft ein Formfield (
www.dsdt.info/tipps/?id=599), das gibt es nur einmal und du füllst den direkt den Text des Formfields. Alternativ: laß das mit dem insertafter, schreib den Text mit typeparagraph rein. Dann wird die Textmarke überschrieben und du findest sie nicht mehr. Nachteil: ein weiterer klick in der Radiogroup und es erfolgt keine Änderung mehr, da die Textmarke nicht merh existiert.
Das Formfield ist für sich sicher besser geeignet.
Mfg Frank