我这个ocx控件主要是用于下拉框里的模糊查询(用于网页)。
数据库是:access (c:\code\data\a.mdb)
里页的duty的表结构是:dutyno(varchar 5)     dutyname (varchar 10)
主要代码是:
unit ActiveFormImpl1;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ActiveX, AxCtrls, ActiveFormProj1_TLB, StdVcl, StdCtrls, DB, DBTables,
  DBCtrls, Buttons, Registry, OleCtrls;type
  TActiveFormX = class(TActiveForm, IActiveFormX)
    Query1: TQuery;
    ComboBox1: TComboBox;
    Database1: TDatabase;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    procedure ActiveFormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  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_Cursor: Smallint; 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_HelpKeyword: WideString; safecall;
    function Get_HelpType: TxHelpType; safecall;
    function Get_KeyPreview: WordBool; safecall;
    function Get_PixelsPerInch: Integer; safecall;
    function Get_PrintScale: TxPrintScale; safecall;
    function Get_Scaled: WordBool; safecall;
    function Get_Visible: WordBool; safecall;
    function Get_VisibleDockClientCount: Integer; safecall;
    procedure _Set_Font(var Value: IFontDisp); 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_Cursor(Value: Smallint); 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_HelpKeyword(const Value: WideString); safecall;
    procedure Set_HelpType(Value: TxHelpType); 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_Visible(Value: WordBool); safecall;
  public
    { Public declarations }
    procedure Initialize; override;
  end;implementationuses ComObj, ComServ;{$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_Cursor: Smallint;
begin
  Result := Smallint(Cursor);
end;function TActiveFormX.Get_DoubleBuffered: WordBool;
begin
  Result := DoubleBuffered;
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_HelpKeyword: WideString;
begin
  Result := WideString(HelpKeyword);
end;function TActiveFormX.Get_HelpType: TxHelpType;
begin
  Result := Ord(HelpType);
end;

解决方案 »

  1.   

    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_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.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_Cursor(Value: Smallint);
    begin
      Cursor := TCursor(Value);
    end;procedure TActiveFormX.Set_DoubleBuffered(Value: WordBool);
    begin
      DoubleBuffered := 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_HelpKeyword(const Value: WideString);
    begin
      HelpKeyword := String(Value);
    end;procedure TActiveFormX.Set_HelpType(Value: TxHelpType);
    begin
      HelpType := THelpType(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_Visible(Value: WordBool);
    begin
      Visible := Value;
    end;procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
    var
      temp:string;
    begin
       
        ComboBox1.Items.Clear;
        Database1.LoginPrompt := false;
        Database1.AliasName := 'code';
        Database1.DatabaseName := 'zou';
        Database1.Connected:=true;
        Query1.Close;
        Query1.SQL.Clear;
        Query1.DatabaseName:=Database1.DatabaseName;
        Query1.sql.add('select * from duty');
        Query1.Active := true;
        while not Query1.Eof do
        begin
            temp:='';
            temp := Query1.FieldByName('dutyname').AsString;
            ComboBox1.Items.Add(temp);
            Query1.Next;
        end;
    end;  
    procedure TActiveFormX.ComboBox1Change(Sender: TObject);
    var
      str:string;
      sql:string;
      temp:string;
    begin
      Set_Caption(ComboBox1.Text);
    end;procedure TActiveFormX.ComboBox1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      str:string;
      sql:string;
      temp:string;
    begin    if ComboBox1.Items.Text<>'' then
        begin
            if key <> 13 then
            begin
            //ComboBox1.Items.Clear;
            str := trim(ComboBox1.Text);
            Query1.Close;
            Query1.SQL.Clear;
            temp:= str+'*';
            sql := 'select * from duty where dutyname like '+Quotedstr(temp);
            Query1.SQL.Add(sql);
            Query1.Prepare;
            Query1.Open;
            Query1.First;
            while not Query1.Eof do
            begin
                temp := Query1.FieldByName('dutyname').AsString;
                combobox1.Items.Add(temp);
                Query1.Next;
            end;
            end;
        end;
        if key = 13 then
        begin
            combobox1.DroppedDown := false;
        end else
            combobox1.DroppedDown := true;
    end;
    initialization
      TActiveFormFactory.Create(
        ComServer,
        TActiveFormControl,
        TActiveFormX,
        Class_ActiveFormX,
        1,
        '',
        OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
        tmApartment);
    end.我现在要把以上的代码编成一个ocx控件,用于网页的快速输入查询显示,
    但是我放到其它的机器上就有如下问题:出现了一个borland database emprise 的错误,在本机上可以实现,请大侠们帮忙解决,小生在线上等着呢
      

  2.   

    就不懂了, 你数据库是连接哪的? 显然你使用了bde, 也有可能是客户机上没有bde引擎.