von pmoegenb » Do, 13.04.2006 10:49
Hallo Alain,
Also nur über ein getcount die anzahl der Textmarken ermitteln, den Namen auslesen, in der Datenbank das Feld finden und anschliessend Preis zuweisen.
Muss nicht sein, man kann Textmarken auf das Vorhandensein prüfen. Einen Codeschnipsel kann ich Dir nur in Object-Pascal liefern:
Code: Alles auswählen
// Text an Textmarke einfügen
function TOLE_OpenOffice.TxTBookmark(name,inhalt:String):boolean;
var
VBookMark, vTextCursor: OleVariant;
begin
Result := true;
If Document.BookMarks.hasByName(name) = true then
begin
try
vBookMark := Document.BookMarks.getByName(name);
vTextCursor := vBookMark.Anchor.Text.createTextCursorByRange(vBookMark.Anchor);
vTextCursor.SetString(inhalt);
except
Result := false;
end;
end;
end;
Code: Alles auswählen
// Textmarke durch Text ersetzen
function TOLE_OpenOffice.ErsetzeBookmark(name,inhalt:String):boolean;
var
objtext, tc, bm, li : Variant;
i : integer;
rueckgabe : boolean;
begin
rueckgabe := false;
try
objText := Document.getText;
tc := objText.createTextcursor;
li := Document.Bookmarks.getElementNames;
for i := VarArrayLowBound(li,1) to VarArrayHighBound(li,1) do
begin
if (uppercase(li[i]) = uppercase(name)) then
begin
bm := Document.Bookmarks.getbyName(li[i]);
tc := Document.Text.createTextCursorByRange(bm.Anchor);
tc.Setstring := inhalt;
rueckgabe := true;
end;
end;
except
rueckgabe := false;
end;
result := rueckgabe;
end;
Bekomme ich keine Probleme wenn ein Textmarken-Name mehrmals in einem Dokument vorkommt?
Doch, ein Textmarken-Namen muss im Dokument eindeutig sein.
Deine weiteren Ausführungen hören sich schwierig an, was die Realisierung anlangt.
Hallo Alain,
[quote]Also nur über ein getcount die anzahl der Textmarken ermitteln, den Namen auslesen, in der Datenbank das Feld finden und anschliessend Preis zuweisen. [/quote]
Muss nicht sein, man kann Textmarken auf das Vorhandensein prüfen. Einen Codeschnipsel kann ich Dir nur in Object-Pascal liefern:
[code]// Text an Textmarke einfügen
function TOLE_OpenOffice.TxTBookmark(name,inhalt:String):boolean;
var
VBookMark, vTextCursor: OleVariant;
begin
Result := true;
If Document.BookMarks.hasByName(name) = true then
begin
try
vBookMark := Document.BookMarks.getByName(name);
vTextCursor := vBookMark.Anchor.Text.createTextCursorByRange(vBookMark.Anchor);
vTextCursor.SetString(inhalt);
except
Result := false;
end;
end;
end;[/code]
[code]// Textmarke durch Text ersetzen
function TOLE_OpenOffice.ErsetzeBookmark(name,inhalt:String):boolean;
var
objtext, tc, bm, li : Variant;
i : integer;
rueckgabe : boolean;
begin
rueckgabe := false;
try
objText := Document.getText;
tc := objText.createTextcursor;
li := Document.Bookmarks.getElementNames;
for i := VarArrayLowBound(li,1) to VarArrayHighBound(li,1) do
begin
if (uppercase(li[i]) = uppercase(name)) then
begin
bm := Document.Bookmarks.getbyName(li[i]);
tc := Document.Text.createTextCursorByRange(bm.Anchor);
tc.Setstring := inhalt;
rueckgabe := true;
end;
end;
except
rueckgabe := false;
end;
result := rueckgabe;
end;[/code]
[quote]Bekomme ich keine Probleme wenn ein Textmarken-Name mehrmals in einem Dokument vorkommt? [/quote]
Doch, ein Textmarken-Namen muss im Dokument eindeutig sein.
Deine weiteren Ausführungen hören sich schwierig an, was die Realisierung anlangt.