不知怎么了,程序运行时,一点ComboBox就会出现violation错误,地址是00404398、00404144,最后结尾的地址是00000080。不点就没事。新建一个程序,在窗体上加个ComboBox没事。
还有怪事:如动态建一个Panel肯定出错,但先在窗体上放一个Panel再动态建Panel就没事了,即使删除窗体上的Panel。
delphi7是专业版的。

解决方案 »

  1.   

    感谢上面两位的回复。经实验,是hint过程的问题。
    我是按照网上找的方法自定义了一个提示过程:当鼠标移到某DBEdit上时显示提示,而提示又是从另一个表中得到的。去掉这个提示过程就一切正常。我想是不是这个过程调用太频繁了,而造成内存方面的问题。我有一个解决方法(不一定行),就是当鼠标在DBEdit上停留1.5秒再调用这个过程,估计就没事了,但不会弄。
    procedure TForm2.DisplayHint(Sender: TObject);
    var
      ctrl : TWinControl;
      AQhint:TADOQuery;
    begin
      ctrl := FindVCLWindow(Mouse.CursorPos) ;
      if ctrl <> nil then
        if ctrl is TDBEdit then
        begin
          tpxm := TDBEdit(ctrl).Text;
          jsh := TDBEdit(ctrl).Tag;
        end;
      if tpxm<>'' then
      begin
        AQhint:=TADOQuery.Create(Application);
        AQhint.Connection:=ADOConnection1;
        AQhint.Close;
        AQhint.SQL.Clear;
        AQhint.SQL.Add('select pgjb from xrsfxpgb');
        AQhint.SQL.Add('where (xm=:xm) and (szjs=:szjs)');
        AQhint.Parameters.ParamByName('xm').Value:=tpxm;
        AQhint.Parameters.ParamByName('szjs').Value:=jsh;
        AQhint.Open;    if AQhint.FieldByName('pgjb').AsString<>'' then
          ctrl.Hint:=AQhint.FieldByName('pgjb').AsString
        else
          if AQhint.FieldByName('pgjb').AsString='' then
            ctrl.Hint:='无内容;
      end
      else
        ctrl.Hint:='';
    end;
    在窗体建立时还有一行代码:Application.OnHint := DisplayHint;
    过程中无论AQhint是不是动态建立,都会产生问题。
    不知那位大虾能解决这个问题,本人万人感激。
      

  2.   

    加一句 if not (ctrl is TDBEdit) then exit 就能解决问题.