包含OCX的页面关闭时报错。(100)

A

anyqu

Unregistered / Unconfirmed
GUEST, unregistred user!
主要就是从页面上获取XML文件。然后写到控件的F1Book里.我试过,FORM上只放按钮和文本框类的控件,关闭时不报错。不知道是不是F1BOOK的问题。可是它我已经释放了!请大家指教,不要告诉我离线包里有答案。我找过了,没有发现。请写出具体方法。测试好使后,可补分!(可用分还有好几千)源代码如下:
代码:
unit ActiveFormImpl1;{$WARN SYMBOL_PLATFORM OFF}interfaceuses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  ActiveX, AxCtrls, ActiveFormProj1_TLB, StdVcl, OleCtrls, VCF1, ComCtrls,  ToolWin,ComObj, msxmldom, XMLDoc,xmldom, XMLIntf;type  TActiveFormX = class(TActiveForm, IActiveFormX)    ToolBar1: TToolBar;
   ToolButton1: TToolButton;
   F1Book1: TF1Book;
   procedure ToolButton1Click(Sender: TObject);
 private    { Private declarations }    FEvents: IActiveFormXEvents;
   procedure ActivateEvent(Sender: TObject);
   procedure ClickEvent(Sender: TObject);
   procedure CreateEvent(Sender: TObject);
   procedure DblClickEvent(Sender: TObject);
   procedure DeactivateEvent(Sender: TObject);
   procedure DestroyEvent(Sender: TObject);
   procedure KeyPressEvent(Sender: TObject;
var Key: Char);
   procedure PaintEvent(Sender: TObject);
 protected    { Protected declarations }    procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);
override;
   procedure EventSinkChanged(const EventSink: IUnknown);
override;
   function Get_Active: WordBool;
safecall;
   function Get_AlignDisabled: WordBool;
safecall;
   function Get_AutoScroll: WordBool;
safecall;
   function Get_AutoSize: WordBool;
safecall;
   function Get_AxBorderStyle: TxActiveFormBorderStyle;
safecall;
   function Get_Caption: WideString;
safecall;
   function Get_Color: OLE_COLOR;
safecall;
   function Get_DoubleBuffered: WordBool;
safecall;
   function Get_DropTarget: WordBool;
safecall;
   function Get_Enabled: WordBool;
safecall;
   function Get_Font: IFontDisp;
safecall;
   function Get_HelpFile: WideString;
safecall;
   function Get_KeyPreview: WordBool;
safecall;
   function Get_PixelsPerInch: Integer;
safecall;
   function Get_PrintScale: TxPrintScale;
safecall;
   function Get_Scaled: WordBool;
safecall;
   function Get_ScreenSnap: WordBool;
safecall;
   function Get_SnapBuffer: Integer;
safecall;
   function Get_Visible: WordBool;
safecall;
   function Get_VisibleDockClientCount: Integer;
safecall;
   procedure _Set_Font(var Value: IFontDisp);
safecall;
   procedure AboutBox;
safecall;
   procedure Set_AutoScroll(Value: WordBool);
safecall;
   procedure Set_AutoSize(Value: WordBool);
safecall;
   procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle);
safecall;
   procedure Set_Caption(const Value: WideString);
safecall;
   procedure Set_Color(Value: OLE_COLOR);
safecall;
   procedure Set_DoubleBuffered(Value: WordBool);
safecall;
   procedure Set_DropTarget(Value: WordBool);
safecall;
   procedure Set_Enabled(Value: WordBool);
safecall;
   procedure Set_Font(const Value: IFontDisp);
safecall;
   procedure Set_HelpFile(const Value: WideString);
safecall;
   procedure Set_KeyPreview(Value: WordBool);
safecall;
   procedure Set_PixelsPerInch(Value: Integer);
safecall;
   procedure Set_PrintScale(Value: TxPrintScale);
safecall;
   procedure Set_Scaled(Value: WordBool);
safecall;
   procedure Set_ScreenSnap(Value: WordBool);
safecall;
   procedure Set_SnapBuffer(Value: Integer);
safecall;
   procedure Set_Visible(Value: WordBool);
safecall;
     public    { Public declarations }    procedure Initialize;
override;
   destructor destroy;override;
 end;
implementationuses  ComServ, About1;{$R *.DFM}{ TActiveFormX }procedure TActiveFormX.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);begin
  { Define property pages here.  Property pages are defined by calling    DefinePropertyPage with the class id of the page.  For example,      DefinePropertyPage(Class_ActiveFormXPage);
}end;
procedure TActiveFormX.EventSinkChanged(const EventSink: IUnknown);begin
  FEvents := EventSink as IActiveFormXEvents;
 inherited EventSinkChanged(EventSink);end;
procedure TActiveFormX.Initialize;begin
  inherited Initialize;
 OnActivate := ActivateEvent;
 OnClick := ClickEvent;
 OnCreate := CreateEvent;
 OnDblClick := DblClickEvent;
 OnDeactivate := DeactivateEvent;
 OnDestroy := DestroyEvent;
 OnKeyPress := KeyPressEvent;
 OnPaint := PaintEvent;end;
function TActiveFormX.Get_Active: WordBool;begin
  Result := Active;end;
function TActiveFormX.Get_AlignDisabled: WordBool;begin
  Result := AlignDisabled;end;
function TActiveFormX.Get_AutoScroll: WordBool;begin
  Result := AutoScroll;end;
function TActiveFormX.Get_AutoSize: WordBool;begin
  Result := AutoSize;end;
function TActiveFormX.Get_AxBorderStyle: TxActiveFormBorderStyle;begin
  Result := Ord(AxBorderStyle);end;
function TActiveFormX.Get_Caption: WideString;begin
  Result := WideString(Caption);end;
function TActiveFormX.Get_Color: OLE_COLOR;begin
  Result := OLE_COLOR(Color);end;
function TActiveFormX.Get_DoubleBuffered: WordBool;begin
  Result :=do
ubleBuffered;end;
function TActiveFormX.Get_DropTarget: WordBool;begin
  Result := DropTarget;end;
function TActiveFormX.Get_Enabled: WordBool;begin
  Result := Enabled;end;
function TActiveFormX.Get_Font: IFontDisp;begin
  GetOleFont(Font, Result);end;
function TActiveFormX.Get_HelpFile: WideString;begin
  Result := WideString(HelpFile);end;
function TActiveFormX.Get_KeyPreview: WordBool;begin
  Result := KeyPreview;end;
function TActiveFormX.Get_PixelsPerInch: Integer;begin
  Result := PixelsPerInch;end;
function TActiveFormX.Get_PrintScale: TxPrintScale;begin
  Result := Ord(PrintScale);end;
function TActiveFormX.Get_Scaled: WordBool;begin
  Result := Scaled;end;
function TActiveFormX.Get_ScreenSnap: WordBool;begin
  Result := ScreenSnap;end;
function TActiveFormX.Get_SnapBuffer: Integer;begin
  Result := SnapBuffer;end;
function TActiveFormX.Get_Visible: WordBool;begin
  Result := Visible;end;
function TActiveFormX.Get_VisibleDockClientCount: Integer;begin
  Result := VisibleDockClientCount;end;
procedure TActiveFormX._Set_Font(var Value: IFontDisp);begin
  SetOleFont(Font, Value);end;
procedure TActiveFormX.AboutBox;begin
  ShowActiveFormXAbout;end;
procedure TActiveFormX.ActivateEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnActivate;end;
procedure TActiveFormX.ClickEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnClick;end;
procedure TActiveFormX.CreateEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnCreate;end;
procedure TActiveFormX.DblClickEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnDblClick;end;
procedure TActiveFormX.DeactivateEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnDeactivate;end;
procedure TActiveFormX.DestroyEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnDestroy;end;
procedure TActiveFormX.KeyPressEvent(Sender: TObject;
var Key: Char);var  TempKey: Smallint;begin
  TempKey := Smallint(Key);
 if FEvents <> nil then
 FEvents.OnKeyPress(TempKey);
 Key := Char(TempKey);end;
procedure TActiveFormX.PaintEvent(Sender: TObject);begin
  if FEvents <> nil then
 FEvents.OnPaint;end;
procedure TActiveFormX.Set_AutoScroll(Value: WordBool);begin
  AutoScroll := Value;end;
procedure TActiveFormX.Set_AutoSize(Value: WordBool);begin
  AutoSize := Value;end;
procedure TActiveFormX.Set_AxBorderStyle(Value: TxActiveFormBorderStyle);begin
  AxBorderStyle := TActiveFormBorderStyle(Value);end;
procedure TActiveFormX.Set_Caption(const Value: WideString);begin
  Caption := TCaption(Value);end;
procedure TActiveFormX.Set_Color(Value: OLE_COLOR);begin
  Color := TColor(Value);end;
procedure TActiveFormX.Set_DoubleBuffered(Value: WordBool);begin
 do
ubleBuffered := Value;end;
procedure TActiveFormX.Set_DropTarget(Value: WordBool);begin
  DropTarget := Value;end;
procedure TActiveFormX.Set_Enabled(Value: WordBool);begin
  Enabled := Value;end;
procedure TActiveFormX.Set_Font(const Value: IFontDisp);begin
  SetOleFont(Font, Value);end;
procedure TActiveFormX.Set_HelpFile(const Value: WideString);begin
  HelpFile := String(Value);end;
procedure TActiveFormX.Set_KeyPreview(Value: WordBool);begin
  KeyPreview := Value;end;
procedure TActiveFormX.Set_PixelsPerInch(Value: Integer);begin
  PixelsPerInch := Value;end;
procedure TActiveFormX.Set_PrintScale(Value: TxPrintScale);begin
  PrintScale := TPrintScale(Value);end;
procedure TActiveFormX.Set_Scaled(Value: WordBool);begin
  Scaled := Value;end;
procedure TActiveFormX.Set_ScreenSnap(Value: WordBool);begin
  ScreenSnap := Value;end;
procedure TActiveFormX.Set_SnapBuffer(Value: Integer);begin
  SnapBuffer := Value;end;
procedure TActiveFormX.Set_Visible(Value: WordBool);begin
  Visible := Value;end;
procedure TActiveFormX.ToolButton1Click(Sender: TObject);var  url:string;
 xmlHttp:Olevariant;
 responseText:Widestring;
 XMLDoc: TXMLDocument;
 xmlFile:string;
 RootNode:IXMLNode;
 i,startpos,endpos:Integer;begin
  url:='http://127.0.0.1/TestActiveX/Data.asp';
 try    xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
   xmlHttp.open('POST',url,false);//如果只获得数据可以将POST修改成GET     xmlHttp.send('a111111----111111');
   responseText:=xmlHttp.responseText;
   if xmlHttp.status='200' then
    begin
      XMLDoc :=TXMLDocument.Create(self);
     XMLDoc.Active:=False;
     startpos :=Pos('<?xml',responseText);
     endpos :=Pos('</fill>',responseText);
     xmlFile :=Copy(responseText ,startpos,endpos-startpos+7);
     XMLDoc.XML.Text:=xmlFile;
     XMLDoc.Active:=true;
     RootNode:= XMLDoc.DocumentElement;
     ShowMessage(IntToStr(RootNode.ChildNodes[0].ChildNodes.Count));
     for i := 0 to RootNode.ChildNodes[0].ChildNodes.Count - 1do
      begin
        F1Book1.TextRC[StrToInt(RootNode.ChildNodes[0].ChildNodes[i].Attributes['ROW']),StrToInt(RootNode.ChildNodes[0].ChildNodes[i].Attributes['COL'])]:=RootNode.ChildNodes[0].ChildNodes[i].Text;
     end;

     xmlHttp.free;
     XMLDoc.free;
   end    else
    begin
      //--      ShowMessage('no resive');
   end;

 except    On E:Exceptiondo
      //--  end;
end;
//函数的具体代码;destructor TActiveFormX.destroy;begin
     //在这里关闭程序中使用的所有的midas连接,和midas的cliedataet;     F1Book1.Free;
     inherited;end;
initialization  TActiveFormFactory.Create(    ComServer,    TActiveFormControl,    TActiveFormX,    Class_ActiveFormX,    1,    '{3A7D56B5-CDBF-4FDB-BC57-C731CE1B1BA7}',    OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,    tmApartment);end.
 

Similar threads

I
回复
0
查看
562
import
I
I
回复
0
查看
619
import
I
I
回复
0
查看
656
import
I
I
回复
0
查看
479
import
I
I
回复
0
查看
535
import
I
顶部