Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi WordItems Gruppieren (https://www.delphipraxis.net/50065-worditems-gruppieren.html)

LoL 20. Jul 2005 09:41


WordItems Gruppieren
 
Moin

Ich habe folgenden Code der ein Bild und eine Textbox Gruppieren soll:
Delphi-Quellcode:
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
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):
"Type not allowed in Variant Dispatch call"

Kann der Compiler damit nicht umgehen? Wie kann ich das ansonsten lösen?

Schonmal im Vorraus Danke!

marabu 20. Jul 2005 09:51

Re: WordItems Gruppieren
 
Zitat:

Zitat von LoL
Laut der MSDN kann man bei der Range Mehrere Strings also auch ein Array mit Strings übergeben.

Wenn das so da steht, dann ist damit wohl ein VariantArrayOf() gemeint - meinst du nicht?

Grüße vom marabu

LoL 20. Jul 2005 12:55

Re: WordItems Gruppieren
 
Danke marabu!

Wenn ich nun folgendes versuche:
Delphi-Quellcode:
var a : Variant;
begin
  a := VarArrayCreate([0, 1], varString);
und das Programm starte erhalte ich folge Fehlermeldnung:
Zitat:

Error Creating Variant Array
Was mache ich falsch?

barf00s 20. Jul 2005 12:59

Re: WordItems Gruppieren
 
schonmal die Hilfe bemüht?

shmia 20. Jul 2005 13:11

Re: WordItems Gruppieren
 
Delphi-Quellcode:
var a : Variant;
begin
  // a := VarArrayCreate([0, 1], varString);
  a := VarArrayOf(['img', 'textbox']);
Übrigens:
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);

LoL 27. Jul 2005 14:37

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:
var a : variant
begin
  ...
  a := VarArrayCreate([0, 1], varOLEStr);
  a[0] := 'img';
  a[1] := 'textbox';
  winword.ActiveDocument.Shapes.Range(a).Group;
end;
Beim Gruppieren aber kommt folgende fehlermeldung:
"Der angegebene Parameter hat einen unzulässigen Wert"

Kann mir da jemand helfen?

marabu 27. Jul 2005 16:14

Re: WordItems Gruppieren
 
Hallo Christoph,

dein array und mein array sind nicht das gleiche:

Delphi-Quellcode:
var
  vav, vao: Variant;
begin
  vav := VarArrayOf(['a', 'b']); // variant array of variant
  vao := VarArrayCreate([0, 1], varOleStr); // variant array of olestr
end;
marabu

LoL 27. Jul 2005 16:33

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

marabu 27. Jul 2005 17:11

Re: WordItems Gruppieren
 
Zitat:

Zitat von LoL
Der Funktion VarArrayOf kann man ja auch leider nicht ein Array of String als Parameter übergebem.

Aber das tue ich doch in meinem Beispiel - oder etwa nicht?

marabu

LoL 27. Jul 2005 18:58

Re: WordItems Gruppieren
 
Folgendes geht beispielsweise nicht:

Delphi-Quellcode:
var a : variant;
    astr : array of String;
begin
  SetLength(astr,2);
  astr[0] := 'img';
  astr[1] := 'textbox';

  a := VarArrayOf(astr);
end;
da man kein Dynamisches Array übergeben darf.

Das Problem ist das ich aber ein dynamisches Array brauche da ich nicht weis wieviele shapes ich habe da ich die dynamisch erstelle...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz