Habe eine WLL mit Delphi, die ich in den Startup Ordner von Word gepackt habe. Die WLL startet also, wenn ich Word starte.
Die WLL erstellt ein Menü-Eintrag in Word. Wenn ich auf diesen Klicke, rufe ich einen Dialog auf (dialog ist ins Delphi-Projekt eingebunden).
Nun bringt mir Word ein Zugriffs-Fehler, wenn ich auf den erstellten Menüeintrag klicke. Dieser muß irgendwie an der Zeile
frmGeschichtsEintrag.Show;
liegen.
Wieso geht das nicht? Was mache ich falsch?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| Library xword32; uses windows, sysutils, word32 in 'word32.pas', worddef in 'worddef.pas', GeschichtsEintrag in 'GeschichtsEintrag.pas' {frmGeschichtseintrag};
Var WordBasic:TWordBasic;
Procedure xwTest; export; stdcall; begin frmGeschichtsEintrag.Execute; end;
Function wdAutoOpen(docId : integer) : integer; export; stdcall; Begin Result:=1; WordBasic:=TWordBasic.Create(docID); WordBasic.RegisterFunction('xwTest','XWord32 DLL'); WordBasic.AddMenu('Travel Master SLK',7,0); WordBasic.AddMenuItem('Travel Master SLK','Geschichts-Eintrag','xwTest',1,0); end;
procedure wdAutoRemove; export; stdcall; begin WordBasic.Free; end;
exports wdAutoOpen INDEX 1, wdAutoRemove INDEX 2, xwTest INDEX 3;
begin end. |
Die aufgerufenen Prozedur sieht so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TfrmGeschichtseintrag.Execute; begin if (TfrmGeschichtsEintrag = nil) then begin TfrmGeschichtsEintrag.Create(Application); end; frmGeschichtsEintrag.Show; frmGeschichtsEintrag.free; end; |