Halli Hallo,
ich habe da ein kleines bis großes Problem.
Und zwar habe ich die tolle Aufgabe eine Delphi Oberfläche um eine Web-Applikation zu programmieren.
Ok das klingt recht trivial habe ich auch gedacht und mit der netten Komponente embeddedWB hatte ich auch recht schnell die Website auf einer Pagecontrol in meinem Formular. Allerdings ruft diese Webseite an bestimmten Stellen eine andere Webseite auf. Konkret: Es öffnet sich eine Suchmaske für Artikel, der ausgewählte Artikel (bzw. dessen Artikelnr.) wird erfolgreich in das erste Browser Fenster übertragen. Allerdings kommt es bei dem 2. Aufruf der Artikelsuche zu der Fehlermeldung "COULD NOT OBTAIN OLE CONTROL WINDOW HANDLE".
Ich hoffe es hat einer von Euch hier eine gute Idee.
Hier ist der Source:
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: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw_EWB, EmbeddedWB, ComCtrls, OleCtnrs;
type TForm1 = class(TForm) pc: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; web1: TEmbeddedWB; web2: TEmbeddedWB; procedure web2WindowClosing(ASender: TObject; IsChildWindow: WordBool; var Cancel: WordBool); procedure web1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); procedure FormShow(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject); begin web1.Navigate('kasse.symasnetwork.de'); end;
procedure TForm1.web1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin pc.ActivePageIndex := 1; Web2.OnNewWindow2 := Web1NewWindow2; ppDisp := Web2.DefaultDispatch; end;
procedure TForm1.web2WindowClosing(ASender: TObject; IsChildWindow: WordBool; var Cancel: WordBool); begin pc.ActivePageIndex := 0; end; end. |