文件管理(三)

tianfeng7925

tianfeng7925

2016-01-29 14:01

文件管理(三),文件管理(三)
 

2. 画出每个自画项目 

  这在TabSet的OnDrawTab事件处理过程中完成。这一事件处理过程的参数中包含了待画项目索引、画板、待画区域、是否被选中等。这里我们只利用了前三个参数。事实上利用最后一个参数,我们可以对被选中的标签进行一些特殊的视觉效果处理。这一工作就留给读者自己去完成。 

procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;

R: TRect; Index: Integer; Selected: Boolean);

var

Bitmap: TBitmap;

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

Bitmap := TBitmap(DriveTabSet.Tabs.Objects[Index]);

with TabCanvas do

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

Draw(R.Left, R.Top + 4, Bitmap);

TextOut(R.Left + 2 + Bitmap.Width, R.Top + 2, DriveTabSet.Tabs[Index]);

end;

end; 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

6.4.5 文件管理基本功能的实现 

  在子窗口的File菜单中,定义了文件管理的基本功能,它们是:

  ● Open :打开或运行一个文件( 从文件列表框双击该文件可实现同样效果)

● Move :文件在不同目录间的移动

  ● Copy :文件拷贝

  ● Delete :文件删除

  ● Rename :文件更名

  ● Properties :显示文件属性 

6.4.5.1 文件打开 

  文件打开功能可以运行一个可执行文件,或把文件在与之相关联的应用程序中打开。文件总是与创建它的应用程序相关联,这种关联可以在Windows的文件管理器中修改。要注意的是:文件的关联是以后缀名为标志的,因而对一个文件关联方式的修改将影响所有相同后缀名的文件。

  文件打开功能实现的关键是利用了Windows API函数ShellExecute 。由于Windows API函数的参数要求字符串类型是PChar,而Delphi中一般用的是有结束标志的String类型,因此为调用方便我们把这一函数进行了重新定义如下。 

function ExecuteFile(const FileName, Params, DefaultDir: String;

ShowCmd: Integer): THandle;

var

zFileName, zParams, zDir: array[0..79] of Char;

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

Result := ShellExecute(Application.MainForm.Handle, nil,

StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),

StrPCopy(zDir, DefaultDir), ShowCmd);

end;

  以上函数在fmxutils单元中定义。fmxutils是一个自定义代码单元。

  有关ShellExecute中各参数的具体含义读者可查阅联机Help文件。

  StrPCopy把一个Pascal类型的字符串拷贝到一个无结束符的PChar类型字符串中。

  在子窗口的Open1Click事件处理过程中: 

procedure TFMForm.Open1Click(Sender: TObject);

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

with FileList do

ExecuteFile(FileName, '', Directory, SW_SHOW) ;

end;

  如果FileList允许显示目录的话( 即FileType属性再增加一项ftDirectory),那么对于一个目录而言,打开的含义应该是显示它下边的子目录和文件。程序修改如下。 

  procefure TFMForm.Open1Click(Sender: Tobject);

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

With FileList do

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

if HasAttr(FileName,faDirectory) then

DirectoryOutline.Directory := FileName

else

ExecuteFile(FileName,' ' ,Directory,SW_SHOW);

end;

end; 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

其中HasAttr是一个fmxutils单元中的自定义函数,用于检测指定文件是否具有某种属性。 

function HasAttr(const FileName: String; Attr: Word): Boolean;

begin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

Result := (FileGetAttr(FileName) and Attr) = Attr;

end; 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)

6.4.5.2 文件拷贝、移动、删除、更名 

  文件拷贝的关键是使用了以文件句柄为操作对象的文件管理函数,因而提供了一种底层的I/O

展开更多 50%)
分享

猜你喜欢

文件管理(三)

Delphi
文件管理(三)

文件管理(一)

Delphi
文件管理(一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

文件管理(二)

Delphi
文件管理(二)

文件管理(一)

Delphi
文件管理(一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi文件管理(二)

编程语言 网络编程
Delphi文件管理(二)

Delphi文件管理(一)

编程语言 网络编程
Delphi文件管理(一)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Delphi面向对象的编程方法(三)

Delphi面向对象的编程方法(三)

asp+中的hash表操作

asp+中的hash表操作
下拉加载更多内容 ↓