AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WordItems Gruppieren

Ein Thema von LoL · begonnen am 20. Jul 2005 · letzter Beitrag vom 27. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
LoL
(Gast)

n/a Beiträge
 
#1

WordItems Gruppieren

  Alt 20. Jul 2005, 10:41
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!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: WordItems Gruppieren

  Alt 20. Jul 2005, 10:51
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
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#3

Re: WordItems Gruppieren

  Alt 20. Jul 2005, 13:55
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?
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: WordItems Gruppieren

  Alt 20. Jul 2005, 13:59
schonmal die Hilfe bemüht?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: WordItems Gruppieren

  Alt 20. Jul 2005, 14:11
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);
Andreas
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#6

Re: WordItems Gruppieren

  Alt 27. Jul 2005, 15:37
Danke
Das funktioniert soweit!

Nur hab ich das Problem das ich nicht weis wieviele Items ich gruppieren will , 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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: WordItems Gruppieren

  Alt 27. Jul 2005, 17:14
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
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#8

Re: WordItems Gruppieren

  Alt 27. Jul 2005, 17:33
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: WordItems Gruppieren

  Alt 27. Jul 2005, 18:11
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
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#10

Re: WordItems Gruppieren

  Alt 27. Jul 2005, 19:58
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.
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