Hallo,
nachdem das grundsätzliche Problem, eine Textbox zu erzeugen, gelöst ist, scheitere ich am Erzeugen mehrere in einer Schleife...
Ich habe von TWPRichText eine eigene Komponente abgeleitet und erweitert.
In einer Schleife, die beim Laden einer Dokumentvorlage gestartet wird, wird folgende procedure mehrfach aufgerufen:
procedure TWPRichText1.ShowPanel(x, Y, b, h: single; s: string);
var
obj: TWPORTFTextBox;
txtobj: TWPTextObj;
begin
Memo.TopOffset := 0;
ReformatAll(true, true);
CPPosition := 0;
//die Positions-und Größenangaben sind Millimeter!
if CursorOnText.Kind <> wpIsBody then
ShowMessage('Cannot insert object in Object')
else
begin
obj := TWPORTFTextBox.Create(self);
obj.WidthTW := WPCentimeterToTwips(b / 10);
obj.HeightTW := WPCentimeterToTwips(h / 10);
obj.ObjName := '_AUTO_' + IntToStr(GetTickCount);
obj.AsString := s;
txtobj := TextObjects.InsertMovableImage(obj);
if txtobj <> nil then
begin
txtobj.Mode := txtobj.Mode + [wpobjObjectUnderText, wpobjCreateAutoName,
wpobjWithinEditable, wpobjRelativeToPage, wpobjSizingDisabled,
wpobjDisableAutoSize];
txtobj.RelX := WPCentimeterToTwips(x / 10);
txtobj.RelY := WPCentimeterToTwips(Y / 10);
// txtobj.Frame := [wpframe1pt, wpframeShadow];
ReformatAll(true, true);
end;
end;
end;
Alles anzeigen
dabei haben z.B. drei erzeugte Textboxen mehr oder weniger zufällig den gleichen oder aber teilweise den gewünschten Inhalt, mal kann man sie anklicken, mal wird dabei der Focus auf eine andere Textbox gesetzt, irgendwo fehlt eine Aktualisierung, nur wo setzt man da an?
Wenn ich obige Procedure "von außen" mehrfach einzeln aufrufe (über eine Methode meiner Komponenten-Ableitung), bekomme ich die Textboxen ordentlich erzeugt und angezeigt!
Bitte um einen Denkanstoß !
Ciao
Stefan