Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Bild in Steuerelement laden bei Word (https://www.delphipraxis.net/161925-bild-steuerelement-laden-bei-word.html)

Sergej_Molotov 27. Jul 2011 14:52

Bild in Steuerelement laden bei Word
 
Hallo,

ich versuche schon seit Stunden, dem Word-Steuerelement "Bild" ein neues Bild hinzuzufügen. Das entfernen des aktuellen Bildes gelingt mir (siehe Code).

Was muss ich denn machen, damit ich z.B. ein neues jpg dem Aktive-X Steuerelement hinzufügen kann?

Grüße

Delphi-Quellcode:
procedure TForm1.DoTest2(const aWord : TWordApplication);
var
  dummy1       : OleVariant;
  dummy2       : OleVariant;
  aInlineShape : InlineShape;
  aDisp       : IDispatch;
  aPic        : IPicture;
  tmp         : Integer;
  aPicDisp    : IPictureDisp;
begin
  dummy1 := 'C:\testvorlage.dot';
  dummy2 := false;

  WordApp2.Documents.AddOld(dummy1, dummy2);

  aInlineShape             := WordApp2.ActiveDocument.InlineShapes.Item(1);

  aDisp                    := aInlineShape.OLEFormat.Object_;
  tmp                      := OleVariant(aDisp).Height;

  aPicDisp                 := nil;
  OleVariant(aDisp).Picture := aPicDisp; //entfernt das aktuelle Bild
end;

himitsu 27. Jul 2011 14:59

AW: Bild in Steuerelement laden bei Word
 
Delphi-Quellcode:
...
OleVariant(aDisp).Picture := nil; //entfernt das aktuelle Bild
Nja, entweder ist schon standardmäßig eine Instanz von IPictureDisp in .Picture enthalten ... dann könntest du mal schauen, was dir IPictureDisp für Methoden anbietet, um ein Bild reinzuladen.
Oder du wirst irgendwo/-wie eine neue IPictureDisp-Instanz erstellen müssen, befüllst diese mit dem Bild und übergibst sie an .Picture .

Sergej_Molotov 27. Jul 2011 15:07

AW: Bild in Steuerelement laden bei Word
 
Genau das habe ich auch schon versucht, aber leider gelingt mir dies nicht. Folgende Funktion erzeugt ein IPictureDisp
Delphi-Quellcode:
function GetImage(Const imageName: String): IPictureDisp;
Var
  P : TPicture;
begin
  Result := Nil;
  P := TPicture.Create;
  P.LoadFromFile(imageName);
  GetOLEPicture(P, Result);
end;
Wenn ich aber dann diese Instanz z.B. mit
Delphi-Quellcode:
OleVariant(aDisp).Picture := GetImage('C:\test.bmp')
setze, dann erhalte ich folgende Exception.
Zitat:

Exception-Klasse EOleSysError mit Meldung 'Schwerwiegender Fehler'. Prozess Project1.exe (7552)
Was mach ich falsch???

Achja, und wie kann man OleVariant(aDisp).Picture zu IPictureDisp casten


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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