Autor Beitrag
Colognemaniac
Hält's aus hier
Beiträge: 1

WIN XP Pro
DELPHI 2005/ 5
BeitragVerfasst: Do 30.11.06 11:13 
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:
ausblenden volle Höhe Delphi-Quelltext
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
    { Private declarations }
  public
    { Public declarations }
  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.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 22.11.08 07:35 
Hallo

So wie du beschreibst, wird das Webbrowser Control geschlossen.
Im OnWindowClosing kannst du das verhindern, wenn Cancel := True gesetzt wird.
(danach kannst du ja eine Blank Seite laden)