![]() |
WordItems Gruppieren
Moin
Ich habe folgenden Code der ein Bild und eine Textbox Gruppieren soll:
Delphi-Quellcode:
Laut der MSDN kann man bei der Range Mehrere Strings also auch ein Array mit Strings übergeben. Leider liefert mir aber schon der Compiler folgende Meldung(mit der ich nicht wirklich was anfangen kann):
var winword: variant;
a : array [0..1] of string; sh_word : Variant; begin try winword := GetActiveOleObject('Word.Application') except winword := CreateOleObject('Word.Application'); end; winword.Visible := True; winword.Documents.Add; sh_word := winword.ActiveDocument.Shapes.AddPicture('einbild.bmp',true,false); sh_word.Name := 'img'; sh_word := winword.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,0,0,100,100); sh_word.Name := 'textbox'; a[0] := 'img'; a[1] := 'textbox'; winword.ActiveDocument.Shapes.Range(a).Group;//Error "Type not allowed in Variant Dispatch call" Kann der Compiler damit nicht umgehen? Wie kann ich das ansonsten lösen? Schonmal im Vorraus Danke! |
Re: WordItems Gruppieren
Zitat:
Grüße vom marabu |
Re: WordItems Gruppieren
Danke marabu!
Wenn ich nun folgendes versuche:
Delphi-Quellcode:
und das Programm starte erhalte ich folge Fehlermeldnung:
var a : Variant;
begin a := VarArrayCreate([0, 1], varString); Zitat:
|
Re: WordItems Gruppieren
schonmal die Hilfe bemüht?
|
Re: WordItems Gruppieren
Delphi-Quellcode:
Übrigens:
var a : Variant;
begin // a := VarArrayCreate([0, 1], varString); a := VarArrayOf(['img', 'textbox']); Es ist empfehlenswert, nicht immer die gesamte Objekthierarchie durchzugehen, sondern man steigt tiefer ein:
Delphi-Quellcode:
var
shapes : OleVariant; ... shapes := winword.ActiveDocument.Shapes; // Interface wird zwischengespeichert, spart einige Zugriffe sh_word := shapes.AddPicture('einbild.bmp',true,false); ... sh_word := shapes.AddTextbox(msoTextOrientationHorizontal,0,0,100,100); |
Re: WordItems Gruppieren
Danke
Das funktioniert soweit! Nur hab ich das Problem das ich nicht weis wieviele Items ich gruppieren will :mrgreen: , da ich die über eine Schleife erstelle und das mal mehr und mal weniger sein können. Bei der Powerpoint-Serverkomponente war das ganz einfach da dieses Range einfach blos ein Array of Strings erwartet hat. Dafür hab ich einfach ein Dynamisches Array of String genommen und die Größe dann immer mit SetLength angepasst. Das geht nun leider aber nicht mehr da die Word-Komponente ja leider komischer Weise ein Variant. Nur klappt das bei mir irgendwie nicht so wie ich will. Ich will einfach ein dynamisches Variant Array das ich immer von der größe anpassen kann wie ich das brauche. Das habe ich folgendermaßen gemacht:
Delphi-Quellcode:
Beim Gruppieren aber kommt folgende fehlermeldung:
var a : variant
begin ... a := VarArrayCreate([0, 1], varOLEStr); a[0] := 'img'; a[1] := 'textbox'; winword.ActiveDocument.Shapes.Range(a).Group; end; "Der angegebene Parameter hat einen unzulässigen Wert" Kann mir da jemand helfen? |
Re: WordItems Gruppieren
Hallo Christoph,
dein array und mein array sind nicht das gleiche:
Delphi-Quellcode:
marabu
var
vav, vao: Variant; begin vav := VarArrayOf(['a', 'b']); // variant array of variant vao := VarArrayCreate([0, 1], varOleStr); // variant array of olestr end; |
Re: WordItems Gruppieren
Hmmm...
Wie kann ich dann mein obengennates Problem lösen? Mir fällt sonst keine Lösung dazu ein. Der Funktion VarArrayOf kann man ja auch leider nicht ein Array of String als Parameter übergebem. Über Hilfestellung wäre ich sehr dankbar |
Re: WordItems Gruppieren
Zitat:
marabu |
Re: WordItems Gruppieren
Folgendes geht beispielsweise nicht:
Delphi-Quellcode:
da man kein Dynamisches Array übergeben darf.
var a : variant;
astr : array of String; begin SetLength(astr,2); astr[0] := 'img'; astr[1] := 'textbox'; a := VarArrayOf(astr); end; Das Problem ist das ich aber ein dynamisches Array brauche da ich nicht weis wieviele shapes ich habe da ich die dynamisch erstelle... |
Re: WordItems Gruppieren
Verstehe!
Warum machst du es dann nicht so?
Delphi-Quellcode:
Jetzt ist der Basistyp der richtige...
var
va: Variant; begin va := VarArrayCreate([0, 1], varVariant); va[0] := 'img'; va[1] := 'textbox'; ... end; marabu |
Re: WordItems Gruppieren
Hab ich ja auch schon probiert kommt selbe Fehlermeldung wie oben auch schon:
"Der angegebene Parameter hat einen unzulässigen Wert" Was mach ich denn da falsch? Die beiden Shapes existieren definitiv.... |
Re: WordItems Gruppieren
Sorry, ich muss passen, habe erst nächste Woche wieder eine Maschine mit Word zum Testen.
Vielleicht kann jemand anderes helfen? Mit hängenden Flügeln marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz