DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: eyang11
今日帖子: 15
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 lzb_talent (天才talent) ★☆☆☆☆ -
普通会员
2004/5/28 15:38:40
标题:
关于类的问题(zizii,waterstone你们也来看看吧) 浏览:1653
加入我的收藏
楼主: 如下代码,我在单元fununit中定义了一个类TEmployee,在TEmployee中定义了一保存对话框SaveDialog1:tsavedialog,并在TEmployee的函数exportdata中用到了SaveDialog1,结果我在调用此函数到if SaveDialog1.Execute then(对话框执行时产生图片中的错误),请高手指点

unit fununit;

interface
uses
  adodb,Forms,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs, BusinessSkinForm, bsSkinCtrls, bsSkinBoxCtrls, StdCtrls, Mask,
  ComCtrls, bsSkinTabs, ExtCtrls, bsdbctrls, bsSkinShellCtrls, jpeg,bsMessages,bassclass,funmessage
  ,strutils,DBGrideh,ComObj,{QDBGrids}db,DBGridEhImpExp;

type
  TEmployee = Class(TInterfacedObject,baseinfo)//baseinfo是自定义基类  

  private
  SaveDialog1:tsavedialog;

  public
  procedure exportdata(exformat:string;dbgrideh:TDBGridEh);

end;


TEmployeeInfo = Class(TEmployee)
public
end;
implementation

procedure TEmployee.exportdata(exformat: string;dbgrideh:TDBGridEh);
var ExpClass:TDBGridEhExportClass;
    Ext:String;
begin
  ExpClass:=nil;
  //SaveDialog1.FileName := 'file1';
  if dbgrideh.Focused then
    if SaveDialog1.Execute then
    begin
      if exformat<>'' then
      begin
        if (exformat='txt') then
        begin
          SaveDialog1.Filter:=' jpg (*.jpg)|*.jpg';
          ExpClass := TDBGridEhExportAsText; Ext := 'Text files (*.txt)|*.TXT';
        end;
        if (exformat='htm') then ExpClass := TDBGridEhExportAsHTML; Ext := 'htm';
        if exformat='xls' then ExpClass := TDBGridEhExportAsXLS; Ext := 'xls';
      end
      else
        ExpClass := nil; Ext := '';
      //endif;
      {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;
      }
    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(dbgrideh),
             SaveDialog1.FileName,False);
      end;
end;
end.
此帖子包含附件:
JPEG 图像
大小:24.3K
----------------------------------------------
delphi酷儿
作者:
男 lovedelphi1 (梦之铃) ★☆☆☆☆ -
盒子活跃会员
2004/5/28 16:21:30
1楼: 我要没说错的话,你的那个SaveDialog1没有创建!
SaveDialog1 := TSaveDialog.Create;
----------------------------------------------
-
作者:
男 lzb_talent (天才talent) ★☆☆☆☆ -
普通会员
2004/5/28 17:06:19
2楼: lovedelphi1:谢谢你的答复,我已经加上你说的了,但错误依旧,请看红字处

unit fununit;

interface
uses
  adodb,Forms,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs, BusinessSkinForm, bsSkinCtrls, bsSkinBoxCtrls, StdCtrls, Mask,
  ComCtrls, bsSkinTabs, ExtCtrls, bsdbctrls, bsSkinShellCtrls, jpeg,bsMessages,bassclass,funmessage
  ,strutils,DBGrideh,ComObj,{QDBGrids}db,DBGridEhImpExp;

type
  TEmployee = Class(TInterfacedObject,baseinfo)//baseinfo是自定义基类  

  private
  SaveDialog1:tsavedialog;

  public
  procedure exportdata(exformat:string;dbgrideh:TDBGridEh);

end;


TEmployeeInfo = Class(TEmployee)
public
end;
implementation

procedure TEmployee.exportdata(exformat: string;dbgrideh:TDBGridEh);
var ExpClass:TDBGridEhExportClass;
    Ext:String;
begin
  SaveDialog1:=tSaveDialog.Create(nil);//----------------此句是我后来加的,但错误还是一模一样啊
    ExpClass:=nil;
  //SaveDialog1.FileName := 'file1';
  if dbgrideh.Focused then
    if SaveDialog1.Execute then
    begin
      if exformat<>'' then
      begin
        if (exformat='txt') then
        begin
          SaveDialog1.Filter:=' 'Text files (*.txt)|*.TXT';
          ExpClass := TDBGridEhExportAsText; Ext := 'Text files (*.txt)|*.TXT';
        end;
     end
      else
        ExpClass := nil; Ext := '';
      //endif;
          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(dbgrideh),
             SaveDialog1.FileName,False);
      end;
end;
end.
----------------------------------------------
delphi酷儿
作者:
男 lovedelphi1 (梦之铃) ★☆☆☆☆ -
盒子活跃会员
2004/5/28 17:18:15
3楼: ExpClass := TDBGridEhExportAsText;
这样也不对吧,TDBGridEhExportAsText是个类,你没有调用它的构造函数!
----------------------------------------------
-
作者:
男 lzb_talent (天才talent) ★☆☆☆☆ -
普通会员
2004/5/28 17:24:59
4楼: ExpClass := TDBGridEhExportAsText;是没有错的,我在一个窗体上直接使用此段代码是顺利通过的,就是把写成TEmployee类的一个函数,并加了savedialog1时出的错,你再给我看看,我想主要是savedialog1的问题
----------------------------------------------
delphi酷儿
作者:
男 luhuaijun (luhuaijun) ★☆☆☆☆ -
盒子活跃会员
2004/5/28 17:36:57
5楼: 不能在那个方法里使用Opendialog1.因为你的实例没有创建。。怎么能使用他的字段值OPendialog1
----------------------------------------------
-
作者:
男 lovedelphi1 (梦之铃) ★☆☆☆☆ -
盒子活跃会员
2004/5/28 17:49:22
6楼: 没完整的代码不好说是哪的错,
但是你的代码有一处是有错误的,至少不是按照你的意思执行的.
Ext := ' ';
你仔细看这里.少了个Begin所以它总是' ';
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS