Guten Morgen!
Wie Ihr seht, bastele ich immer noch an meinem Problem herum. Auch die Änderung des Codes und Einbinden eines CoClass-Objekts haben mich nicht weiter gebracht:
Delphi-Quellcode:
function TWordSettings.Style_Create(Format: TFormat): Style;
var
_Type: OleVariant;
MF: TWordFont;
_Para: WordParagraphFormat;
counter: Integer;
TSAlignment, TSLeader: OleVariant;
TemplateIdx: OleVariant;
LevelIdx: OleVariant;
LG: ListGallery;
srvIntfFont: _Font;
begin
Result := nil;
_Type := 1;
if Assigned ( Format ) then begin
if HasActiveDocument then begin
Result := Style_GetStyle ( Format.StyleInfoAF.Name );
if Result = nil then
Result := FWord.ActiveDocument.Styles.Add ( Format.StyleInfoAF.Name, _Type );
// In Result können jetzt die Werte eingetragen werden...
with Format.StyleInfoAF do begin
// Allgemein
Result.Set_LanguageID ( LanguageID );
// Link 2 List
if Format.Link2ListSet then begin
LG := FWord.ListGalleries.item(LinkToList.GalleryIdx.Value);
LevelIdx := LinkToList.LevelIdx.Value;
TemplateIdx := LinkToList.TemplateIdx.Value;
Result.LinkToListTemplate ( LG.ListTemplates.item(TemplateIdx), LevelIdx );
// Und in die Listgallery eintragen
LG.ListTemplates.item(TemplateIdx).ListLevels.Item(LevelIdx).Set_LinkedStyle ( Name );
end;
// Font
try
// Erzeugen und Verbinden eines expliziten TWordFont-Objektes,
// um hierüber auf die Font-Eigenschaften zuzugreifen
MF := TWordFont.Create ( nil );
srvIntfFont := Result.Font;
if srvIntfFont <> nil then MF.ConnectTo ( srvIntfFont as Word_TLB._Font )
else ShowMessage ( 'Kein Font-Objekt' );
// ... und hier der Zugriff...
with Font do begin
MF.Name := Name.Value;
MF.Size := Size.Value;
if Bold.Value then MF.Bold := 1 else MF.Bold := 0;
[...]
In Word2000 funktioniert auch der neue Code einwandfrei, in Word2003 hat sich ebenfalls nichts geändert. Beim Zugriff auf die Font-Eigenschaften der Formatvorlage geht alles ins Leere. Word2003 gibt keine Rückmeldung mehr...
Matthias