DBGridEh 导出数据的问题
我在网上找到了这个例子,但是我运行到
if (ActiveControl is TDBGridEh) then
myDBGridEh:=(ActiveControl as TDBGridEh)
else
begin
ShowMessage( '请指定需要导出数据的表格! ');
Exit;
end;
这里就
ShowMessage( '请指定需要导出数据的表格! ')了
我想问一下,怎么才满足 ActiveControl is TDBGridEh ?? 谢谢!
*****************************************************
例子代码
uses DBGridEhImpExp;
procedure TFMSearch.ActExportExecute(Sender: TObject);
var
SD: TSaveDialog;
FileType: TDBGridEhExportClass;
myDBGridEh: TDBGridEh;
begin
if (ActiveControl is TDBGridEh) then
myDBGridEh:=(ActiveControl as TDBGridEh)
else
begin
ShowMessage( '请指定需要导出数据的表格! ');
Exit;
end;
SD:=TSaveDialog.Create(Self);
try
FileType:=nil;
SD.InitialDir:=ExtractFileDir(Application.ExeName)+ '\..\ ';
SD.Options:=SD.Options+[ofOverwritePrompt];
SD.Filter:= 'Excel(*.Xls)|*.Xls|Html(*.Htm)|*.Htm| ';
SD.Filter:=SD.Filter+ '文本文件(*.Txt)|*.Txt|富文本文件(*.RTF)|*.RTF ';
SD.Title:= '表中的数据保存为文件 ';
if SD.Execute then
begin
case SD.FilterIndex of
1: FileType:=TDBGridEhExportAsXLS;
2: FileType:=TDBGridEhExportAsHtml;
3: FileType:=TDBGridEhExportAsText;
4: FileType:=TDBGridEhExportAsRTF;
else
end;
if Pos( '. ',SD.FileName) <=0 then
case SD.FilterIndex of
1: SD.FileName:=SD.FileName+ '.Xls ';
2: SD.FileName:=SD.FileName+ '.Htm ';
3: SD.FileName:=SD.FileName+ '.Txt ';
4: SD.FileName:=SD.FileName+ '.RTF ';
else
end;
SaveDBGridEhToExportFile(FileType,myDBGridEh,SD.FileName,true);
if FileExists(SD.FileName) then
ShowMessage( '导出文件成功! ');
end;// else ShowMessage( '用户取消文件导出! ');
finally
SD.Free;
myDBGridEh.SetFocus;
end;
end;
[解决办法]
ActiveControl的类型是TDBGridEh 吧 或者是TDBGridEh 的子类ActiveControl is TDBGridEh 应该都成立
[解决办法]
ActiveControl是Form类的一个属性,表示当前获取焦点的控件。
你的问题在于你执行动作时,你的DBGridEh没有获得焦点。
[解决办法]
DBGridEh1.SetFocus