1,你查一下tdbedit.change的声明,看看是不是有什么特别,
2,报错的内容是什么?
3,2000有比98严格的多的消息管理机制,你没犯着它吧?

解决方案 »

  1.   

    编译不出错(Delpli5+win2000)
    在把控件放在form上就出错
    错误信息:
    Access violation at address 5100213E in modue 'dclusr50.bpl',Read of address 00000000
      

  2.   

    //不好意思,把你的控件改了一点
    //我在 win2000+delphi6 下使用没有问题。
    unit DbDateEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Mask, DBCtrls,comctrls;type
      TDBDateEdit = class(TDBEdit)
        DateTimePicker: TDateTimePicker;
      private
        { Private declarations }
      protected
        { Protected declarations }
        procedure DBChange(Sender: TObject);
        procedure Change;override;
      public
        { Public declarations }
        constructor Create(Owner: TComponent); override;
        destructor Destroy; override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Free', [TDBDateEdit]);
    end;constructor TDBDateEdit.Create(Owner: TComponent);
    begin
      inherited Create(Owner);  DateTimePicker          := TDateTimePicker.Create(self);
      DateTimePicker.Parent   := self;
      DateTimePicker.Left     := Left - 1;
      DateTimePicker.Top      := Top - 1;
      DateTimePicker.Height   := Height;
      DateTimePicker.Width    := Width;
      DateTimePicker.OnChange := DBChange;
    end;procedure TDBDateEdit.DBChange(Sender: TObject);
    begin
      if DataSource <> nil then
      begin
        DataSource.Edit;
        Field.AsDateTime := DateTimePicker.Date;
      end;
    end;procedure TDBDateEdit.Change;
    begin
      if DataSource <> nil then
        if Field.AsDateTime > 0 then
          DateTimePicker.Date := Field.AsDateTime;
    end;destructor TDBDateEdit.Destroy;
    begin
      DateTimePicker.Free;  inherited;
    end;end.
      

  3.   

    谢谢jingpingyi(jingpingyi)
    再给10分