Announcement

Collapse
No announcement yet.

Bild mit Positionsrahmen in Word einfügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bild mit Positionsrahmen in Word einfügen

    Eine Bitte an alle Experten:

    Kann mir jemand sagen, wie man unter Benutzung der Server-Komponente von Delphi5 in ein Word-Dokument ein JPG-File einfügen kann, das aber nicht in der Originalgröße, sondern in einer bestimmten Größe in einem Positionsrahmen erscheinen soll?

    Wäre für Hinweise äußerst dankbar.

    Vielen Dank im Voraus...

  • #2
    Hallo,

    wenn man diese Aufgabe als Makro in Word2000 aufzeichnet, erhält man die folgenden Anweisungen:
    <pre>
    Selection.InlineShapes.AddPicture FileName:="C:\Ablage\Export.BMP", _
    LinkToFile:=False, SaveWithDocument:=True
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.InlineShapes(1).Fill.Visible = msoFalse
    Selection.InlineShapes(1).Fill.Transparency = 0#
    Selection.InlineShapes(1).Line.Weight = 0.75
    Selection.InlineShapes(1).Line.Transparency = 0#
    Selection.InlineShapes(1).Line.Visible = msoFalse
    Selection.InlineShapes(1).LockAspectRatio = msoTrue
    Selection.InlineShapes(1).Height = 119.9
    Selection.InlineShapes(1).Width = 119.9
    Selection.InlineShapes(1).PictureFormat.Brightness = 0.5
    Selection.InlineShapes(1).PictureFormat.Contrast = 0.5
    Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic
    Selection.InlineShapes(1).PictureFormat.CropLeft = 0#
    Selection.InlineShapes(1).PictureFormat.CropRight = 0#
    Selection.InlineShapes(1).PictureFormat.CropTop = 0#
    Selection.InlineShapes(1).PictureFormat.CropBottom = 0#
    </pre>

    Und in Delphi 5 ergeben sich daraus die folgenden Aufrufe:
    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    var
    sFilename : String;
    aShape : InlineShape;
    begin
    sFileName := 'C:\Ablage\Hund.bmp';
    WordApplication1.Connect;
    WordApplication1.Visible := True;
    WordApplication1.Documents.AddOld(EmptyParam, EmptyParam);
    WordDocument1.ConnectTo(WordApplication1.ActiveDoc ument);
    WordDocument1.InlineShapes.AddPicture(sFilename, EmptyParam,
    EmptyParam, EmptyParam);
    aShape := WordDocument1.InlineShapes.Item(1);
    aShape.Height := 50;
    aShape.Width := 50;
    end;
    </pre>

    Über das <b>InlineShape</b>-Objekt kann die Grösse der Grafik geändert werden, wobei auch eine prozedurale Verkleinerung unterstützt wird

    Comment


    • #3
      Lieber Herr Kosch,

      herzlichen Dank für die ausführliche Hilfe. Aber jetzt sagen Sie doch bitte mal, woher Sie das zum T... alles wissen. Da kann man ja wirklich Komplexe bekommen :-)) Ein Makro kann ja jeder von uns aufzeichnen, aber dann...

      Nochmals Danke..

      Comment


      • #4
        Hallo Herr Kosch,

        ich habe Ihr Beispiel inzwischen ausprobiert, dazu aber noch Fragen:

        1. AddOld wurde bei mir nicht akzeptiert. Ich habe es durch add ersetzt. Was bedeutet addOld?<br>2. In Word97 gab es doch mal Positionsrahmen, die man (mit Bild) frei verschieben konnte. So etwas benötige ich. In einem alten Word-Makro fand ich dazu:

        '******************** Positionsrahmen und Bilder einfügen ******<br>
        WordBasic.InsertFrame<br>
        WordBasic.EditBookmark Name:="B" + WordBasic.[LTrim$](Str(i)), Add:=1<br>
        WordBasic.FormatFrame Wrap:=1, WidthRule:=1, FixedWidth:=Breite$, HeightRule:=2, FixedHeight:=Hoehe$, PositionHorz:=links$, PositionHorzRel:=1, DistFromText:="0 cm", PositionVert:=oben$, PositionVertRel:=1, DistVertFromText:="0 cm", MoveWithText:=1, LockAnchor:=0<br>
        WordBasic.InsertPicture Name:=ergebnis__$(i), LinkToFile:=0<br>

        Lässt sich so etwas per OLE (auch in Word2000) realisieren?

        Die Aufgabenstellung ist für mich, aus einer medizinischen Bilddatenbank in mit Word erstellte Befunde Bilder in bestimmter Größe einzufügen, die vom Anwender verschoben und in der Größe verändert werden können.

        Danke im voraus für einen weiteren Kommentar..

        Comment


        • #5
          Hallo,

          in <b>Microsoft Word 2000</b> hat Microsoft einige Interface-Methoden erweitert, so das nun zum Beispiel die Methode <b>Add</b> eine andere Syntax verwendet. Allerdings steht unter <b>AddOld</b> noch die alte Syntax von Word 97 zur Verfügung. Wenn die Typbibliothek eingebunden wurde, sieht man auf den ersten Blick (Code-Vervollständigung), welche Methoden zur Auswahl angezeigt werden.

          Neu in Word 2000 ist auch, das die alten Positionsrahmen nicht mehr in dieser Form zur Verfügung stehen (genauer gesagt, sind diese Dinger nur dann sichtbar, wenn ein altes Word95/97-Dokument geöffnet wird). Anstelle von Positionsrahmen gibt es nun Frames.

          Der Anwender kann - nachdem die Grafiken über <b>InlineShapes</b> eingefügt wurde - diese in Word 2000 manuell auch dann verändern, wenn kein Positionsrahmen verwendet wird

          Comment


          • #6
            Danke Herr Kosch für die lehrreiche Information,

            aber es bleibt die Frage: Kann man denn eine solche Grafik auch beliebig verschieben? Ich denke nicht, oder

            Comment


            • #7
              Hallo,

              doch - zum Ausprobieren sind unter Word 2000 die folgenden Schritt notwendig: <br>
              1. Menü "Einfügen | Grafik | Aus Datei..." aufrufen und Grafik einfügen. <br>
              2. Mit der linken Maustaste Grafik anklicken - Word zeigt Umrandung an<br>
              3. Mauszeiger auf die rechte untere Ecke der Umrandung positionieren, der Mauscursor wird zum Doppelpfeil -> Die Grafik kann verkleinert werden. <br>
              4. Verkleinerte Grafik mit der gedrückt gehaltenen linken Maustaste an eine beliebige Textstelle oder in ein Tabellenfeld-Feld ziehen.<br>
              5. Fertig. Word zeigt nun das <b>Anker</b>-Symbol am Dokumentrand an.

              Wenn der Bearbeiter nach dem automatischen Einfügen der Grafik die Position manuell nachbearbeiten darf, würde ich das so lassen, wie o.g. Beispiel. Word unternimmt im Hintergrund alle notwendigen Schritte in eigener Regie, wenn die Grafik in eine andere Textstelle verschoben wird

              Comment


              • #8
                Hallo Herr Kosch,

                danke für Ihre Erklärungen. Diese Prozedur ist mir schon klar. Dennoch: das Verschieben funktioniert natürlich nur an eine andere Textposition. Da in meinem Fall aber kein Text existiert, geht auch das Verschieben nicht. Das war ja mit den alten Positionsrahmen möglich. Dennoch hat mir Ihr Hinweis auf das Tabellen-Feld sehr geholfen, denn ich kann ja jederzeit eine Tabelle ohne Rand erstellen und die Bilder dort einfügen.

                Damit ist der Fall für mich gelöst :-))

                Nochmals herzlichen Dank

                Comment

                Working...
                X