Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Textbox in Word erstellen (https://www.delphipraxis.net/103205-textbox-word-erstellen.html)

Timelesk 12. Nov 2007 13:03


Textbox in Word erstellen
 
Hallo,

ich möchte in Word eine Textbox erstellen und sie mit Inhalt füllen.
Leider kann man dies nicht über ein Makro machen. Office XP lässt mich beim Makro-Aufzeichnen keine Textbox erstellen.
Danach hab ich einfach mal mit Shapes probiert, aber es kommt folgende Fehlermeldung:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Word.exe ist eine Exception der Klasse EOleError mit der Meldung 'Die Methode 'Shapes' wird vom Automatisierungsobjekt nicht unterstützt' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


Ich greife folgendermaßen auf Word zu:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp, NewDoc, WordTable: OLEVariant;
  iRows, iCols, iGridRows, jGridCols: Integer;
begin
  try
    // Create a Word Instance
    // Word Instanz erzeugen
    WordApp := CreateOleObject('Word.Application');
  except
    // Error...
    // Fehler....
    ShowMessage('Word kann nicht geöffnet werden.');
    Exit;
  end;
 
  // Show Word
  // Word anzeigen
  WordApp.Visible := True;

  // Add a new Doc
  // Neues Dok einfügen
  NewDoc := WordApp.Documents.Add;
 
  WordApp.Selection.MoveDown(wdLine, 1);

  WordApp.Selection.TypeParagraph;

  WordApp.Selection.ParagraphFormat.Alignment:= wdAlignParagraphLeft;

  WordApp.Selection.Shapes.AddTextbox(1,20,10,50,10);
  //shp := Shapes.AddTextbox(1,20,10,50,10);
  //shp.TextFrame.Characters(1, 200).Text := 'Hello';
  //WordApp.Shapes.AddTextBox(1,30,50,200, 100,EmptyParam);

  // Ansicht
  //WordApp.ActiveWindow.ActivePane.View.Type := 3;
  // 0 = wdPortrait, 1 = wdLandScape
  //WordApp.Selection.PageSetup.Orientation := 1;


  WordApp.ActiveDocument.SaveAs(ExtractFilePath(Application.ExeName) + 'test.doc');

  //Close Word
  //WordApp.DisplayAlerts := 0;
  //WordApp.Documents.Item(1).Save;
  //WordApp.Quit;

  // Cleanup...
  WordApp := Unassigned;
  NewDoc := Unassigned;
  WordTable := Unassigned;
end;

Ich weiß echt nicht weiter!
Kann man auch noch anders mit Word kommunizieren?
Weil die ausgeklammerte Lösung mit shp := ... hab ich mir irgendwo abgeschaut, aber Shapes kennt er ja anscheinend doch nicht...

vielen Dank

gruß
Timelesk

marabu 12. Nov 2007 13:36

Re: Textbox in Word erstellen
 
Hallo,

ich würde es mal so probieren:

Delphi-Quellcode:
NewDoc := WordApp.Documents.Add;
shp := NewDoc.Shapes.AddTextbox(1,20,10,50,10);
Grüße vom marabu

Timelesk 12. Nov 2007 14:17

Re: Textbox in Word erstellen
 
Hallo marabu,

vielen Dank. Jetzt funktioniert es.
Ich bin gerade dabei mich in die Sache einzuarbeiten und ein wenig am rummspielen.

Bei Delphi gibt es doch immer diese Live-Hilfe.
Wenn du Edit1. eingibst, popt doch gleich ein Fenster auf und zeigt dir die Möglichkeiten für das Edit-Feld an.
Wenn ich jetzt aber NewDoc. eingebe, schlägt mir Delphi lediglich Templates vor und keine Funktionen, Eigenschaften oder so etwas.

Ist das normal oder gibt es dafür (Ab-)Hilfe?

gruß
Timelesk

DP-Maintenance 12. Nov 2007 14:45

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Windows 9x / ME / 2000 / XP / 2003 / Vista" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist kein Windows-Problem...

sniper_w 12. Nov 2007 14:52

Re: Textbox in Word erstellen
 
Ja das ist sehr wohl normal, denn diese Hilfe häng u.a. von der Typ der Variable. Ist deine Variable "untypisiert" wie z.B. Variant oder OLEVariant, dann gibt es keine Hilfe in dem Sinne.

marabu 12. Nov 2007 14:52

Re: Textbox in Word erstellen
 
Es ist "normal" - und es gibt Abhilfe: Du musst von "später" zu "früher" Bindung wechseln. Sobald du nicht mehr mit OleVariant-Typen arbeitest, sondern direkt mit den relevanten Schnittstellenzeigern, hast du auch wieder die Code-Vervollständigung in der IDE.

Freundliche Grüße


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