Einzelnen Beitrag anzeigen

onk

Registriert seit: 12. Aug 2008
Ort: Berlin-Lichterfelde
8 Beiträge
 
Delphi 10 Seattle Professional
 
#1

COM - Word in den Vordergrund bringen

  Alt 11. Aug 2014, 17:47
Hallo liebe Delphianer,

das ist mein erster Post, aber ich bin schon jahrelanger Besucher von Delphi Praxis. Ich hoffe, ich gehe euch nicht zu sehr auf den Keks. Jetzt kommt die Problemstellung. Wenn ich von meinem Programm aus Word starte bleibt Word im Hintergrund. Das ist unschön, weil das der Monatsbericht ist und man erst mit Alt - Tab zu Word wechseln muss.
Ich starte von der Mainform ein Formular mit folgenden Code:
Delphi-Quellcode:
IrgendeinButtonClick((Sender: TObject);
//hier der Aufruf von Form6 aus Form1...
// den Code habe ich aus eurer Rubrik „Tipps und Tricks“ und dem SwizDelphiCenter.

Form6 := TForm6.Create(nil);
  try
    Form6.ShowModal;
  finally
    FreeAndNil(Form6);
  end;
In Form6 starte ich Word über COM. In einem Wordtemplate habe ich die Textmarke "titel" eingfügt.
Delphi-Quellcode:
// Wenn das Ereignis ausgelöst wird die hier zugewiesene Information im WordDokument eingetragen. Das ist der Monatsbericht.
// hier der Code...
meinebookmark := 'titel';
      if Doc.Bookmarks.Exists(meinebookmark) then
  begin
    R := Doc.Bookmarks.Item(meinebookmark).Range;
    // Add text at our bookmark
    // Text bei Textmarke einfügen
    r.select;
      try
    objword.selection.typetext(adodataset1.FieldByName('bezeichnung').AsString);
     except
      end;
 end;
So jetzt kommt es, die OleVariant ist auf folgende Werte eingestellt:
Delphi-Quellcode:
// ob die Reihenfolge so richtig ist? funktionieren tuts ja...
objword.Activate;
objword.WindowState:=wsNormal;
objword.Visible:=true;
Word starttet korrekt, füllt die Textmarken aus bleibt aber im Hintergrund, so ein Mist… seufz
Da wird der Monatsbericht nach Word ausgedruckt und den sollte man sofort sehen und nicht erst mit der „Alt-Tab-Kombination“ zu Word wechseln.

Jetzt probiere ich das aus...
Delphi-Quellcode:
// einzeln und in Kombination
objword.Activate;
objword.WindowState:=wsNormal;
objword.Visible:=true;
//application.hide;
application.ModalFinished;
application.minimize
//bringt aber auch nicht das gewünschte Ergebnis.
Das Problem ist, dass ich Word von der 2. Form aus starte und mir alle Aktionen mit "application" Form1 anzeigen, wo aber alles auf enabled:=false steht, weil Form6 showmodal ist.
Bin über jeden Tipp dankbar.
Liebe Grüße aus Berlin
MichiZi





Michael Zimpel

Geändert von onk (11. Aug 2014 um 18:00 Uhr)
  Mit Zitat antworten Zitat