lbview(fsxhtlb.DBGridEh1,fsxhtlb.ADOQuery2);  //调用dbgrideh1字段自动添加过程
过程内容如下:
procedure lbview(dbeh:Tdbgrideh;ado:Tadoquery);
  var i:integer; col : TColumnEh;
  begin
   for i:=0 to dbeh.Columns.Count -1  do
       begin
       dbeh.Columns.Clear;
       end;
while not ado.Eof do
   begin
  col:=dbeh.Columns.Add;
  col.Title.Caption:=ado.FieldValues['kjcaption'];
  col.FieldName:=ado.FieldValues['fieldname'];
  col.Width:=ado.FieldValues['width'];
  col.ReadOnly:=true;
  ado.Next;
   end;
 end;现在问题是我用savedialog打算导出dbgrideh内容时,提示Cannot focus a disabled or invisible window错误。下面是输出事件:
procedure Tfsxhtlb.RzToolButton2Click(Sender: TObject);
var ExpClass:TDBGridEhExportClass;
    Ext:String;
begin
  self.ActiveControl:=dbgrideh1;
  SaveDialog1.FileName := 'FILE';  if (ActiveControl is tDBGridEh) then
    if SaveDialog1.Execute then
    begin
      case SaveDialog1.FilterIndex of
        1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
        2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
        3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
        4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
        5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
      else
        ExpClass := nil; Ext := '';
      end;
      if ExpClass <> nil then
      begin
        if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <>
           UpperCase(Ext) then
          SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
        SaveDBGridEhToExportFile(ExpClass,TDBGridEh(ActiveControl),
             SaveDialog1.FileName,true);
      end;
    end;
end;