Ich erzeuge eine Textbox im Header und möchte später damit etwas machen.
Zum Testen habe ich folgenden Minimalcode:
Code
procedure TForm1.Button1Click(Sender: TObject);
var
SpecialText: TWPRTFDataBlock;
X, Y, b, H: Integer;
RTFData: TWPRTFDataBlock;
txtobj: TWPTextObj;
p: Integer;
list: TWPTextObjList;
i: Integer;
begin
SpecialText := WPRichText1.HeaderFooter.Get(wpIsHeader, wpraOnFirstPage);
if SpecialText.Empty then
begin
X := WPCentimeterToTwips(1);
Y := WPCentimeterToTwips(0.5);
b := WPCentimeterToTwips(4);
H := WPCentimeterToTwips(1.5);
// Textbox erzeugen
RTFData := nil;
WPRichText1.ActiveText := WPRichText1.HeaderFooter.Get(wpIsHeader, wpraOnFirstPage);
txtobj := WPRichText1.TextObjects.InsertTextBox(b, H, RTFData);
txtobj.PositionMode := wpotPage;
txtobj.RelX := X;
txtobj.Rely := Y - WPRichText1.Header.MarginHeader;
txtobj.Frame := [];
if RTFData <> nil then
begin
RTFData.RtfText.AsString := 'Hallo';
end;
end;
WPRichText1.ActiveText := WPRichText1.BodyText;
WPRichText1.ReformatAll(true, true);
WPRichText1.SetFocus;
i := WPRichText1.TextObjects.Count;
list := TWPTextObjList.Create;
WPRichText1.TextObjectsGetList(list, wpobjTextObject, true);
for i := 0 to list.Count - 1 do
begin
list[i].SetTag(0);
end;
list.Free;
end;
Alles anzeigen
Die Zeile
soll nur angeben ob was vorhanden ist, später dann beim Erstellen der Liste
ist list.count dann aber 0 groß!
Hintergrund:
Ich wollte in der Schleife alle Textobjekte Tag = 0 setzen, um im OnTextObjectPaint das gerade selektierte gelben Hintergrund (Tag = 1) und alle anderen weißen Hintergrund zu zeichnen.
Wo liegt mein Denkfehler?
Ciao
Stefan