第一个问题:
------------------------------------------------------------
我做了一个程序,界面是这样的:
最上面是menu,下面是toolbar
再下面用的是一个bevel,bevel旁边是一个richedit
我把bevel作为容器,放了一个drivercombobox,下面是个directorylistbox,然后又3放了一个filtercombobox,下面又放了一 个filelistbox,
问题是:
我设置bevel可以随着窗体的大小改变而改变高度,但bevel里的directorylistbox和filelistbox该怎么样让他们也随着窗体的高度而改变高度呢?
-------------------------------------------------------------
第二个问题:
怎样取得一个文件的相关属性,我在richedit里用opendialog 载入一个文件
我想取得如下属性:
1.文件大小
2.文件创建时间
3.文件最后一次修改时间希望高手不吝赐教,一但得到答复,马上结贴给分~决不食言~
------------------------------------------------------------
我做了一个程序,界面是这样的:
最上面是menu,下面是toolbar
再下面用的是一个bevel,bevel旁边是一个richedit
我把bevel作为容器,放了一个drivercombobox,下面是个directorylistbox,然后又3放了一个filtercombobox,下面又放了一 个filelistbox,
问题是:
我设置bevel可以随着窗体的大小改变而改变高度,但bevel里的directorylistbox和filelistbox该怎么样让他们也随着窗体的高度而改变高度呢?
-------------------------------------------------------------
第二个问题:
怎样取得一个文件的相关属性,我在richedit里用opendialog 载入一个文件
我想取得如下属性:
1.文件大小
2.文件创建时间
3.文件最后一次修改时间希望高手不吝赐教,一但得到答复,马上结贴给分~决不食言~
filelistbox这个大小也改的话你只能在form的onpaint或onresize事件中自己写程序了,不然计算机怎么知道你要怎么改大小。
第二个问题可以使用api啊
BOOL GetFileTime( HANDLE hFile, // identifies the file
LPFILETIME lpCreationTime, // address of creation time
LPFILETIME lpLastAccessTime, // address of last access time
LPFILETIME lpLastWriteTime // address of last write time
);DWORD GetFileSize( HANDLE hFile, // handle of file to get size of
LPDWORD lpFileSizeHigh // address of high-order word for file size
);
这个问题你自己看看帮助就解决了,还要问
其中有一个类型(在SysUtils单元下)
type
TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;
包含时间,大小等等.....
查询主体函数。
参数介绍:Mainpath: 指定的查询目录。Filename: 欲查询的文件。Foundresult: 返回的含完整路径的匹配文件(可能有多个)。如果有匹配文件,函数返回True,否则,返回False; function SearchFile(mainpath:string;filename:string;var foundresult:TStrings):Boolean;vari:integer;Found:Boolean;subdir1:TStrings;searchRec:TsearchRec;beginfound:=false;if Trim(filename)<>'' thenbeginsubdir1:=TStringList.Create;//字符串列表必须动态生成//找出所有下级子目录。if (FindFirst(mainpath+'*.*', faDirectory, SearchRec)=0) thenbeginif IsValidDir(SearchRec) thensubdir1.Add(SearchRec.Name);while (FindNext(SearchRec) = 0) dobeginif IsValidDir(SearchRec) thensubdir1.Add(SearchRec.Name);end;end;FindClose(SearchRec);//查找当前目录。if FileExists(mainpath+filename) thenbeginfound:=true;foundresult.Add(mainpath+filename);end;//这是递归部分,查找各子目录。for i:=0 to subdir1.Count-1 dofound:=Searchfile(mainpath+subdir1.Strings[i]+'\',Filename,foundresult)or found;//资源释放并返回结果。subdir1.Free;end;result:=found;end;
一句话,我还是希望能有高手给出关于文件属性的实例,分数80,另外20是给stevenpeng(第九种兵器) 的~
不明白没关系,下面可以取文件大小,日期等,
有问提可以再问,我还会继续留意一段时间.
你要与你的要求一模一样的程序吗?
Yes or no?
//=======================================================
a.增加一个Function
function CovFileDate(Fd:_FileTime):TDateTime;
{ 转换文件的时间格式 }
var
Tct:_SystemTime;
Temp:_FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
CovFileDate:=SystemTimeToDateTime(Tct);
end;
//====================
b.使用上个Function得到日期
Tp:TSearchRec;
//
CovFileDate(Tp.FindData.ftCreationTime)));
{ 返回文件的创建时间 }
T2:=FormatDateTime(Model,
CovFileDate(Tp.FindData.ftLastWriteTime)));
{ 返回文件的修改时间 }
tp.size;
{ 返回文件大小}
我再来讲讲吧
先定义一个Function:CovFileDate
然后使用下一个procedure:GetfileTime取文件时间
procdeure GetFileTime(const Tf:string);
{ 获取文件时间,Tf表示目标文件路径和名称 }
const
Model='yyyy/mm/dd,hh:mm:ss'; { 设定时间格式 }
var
Tp:TSearchRec; { 申明Tp为一个查找记录 }
T1,T2,T3:string;
begin
FindFirst(Tf,faAnyFile,Tp); { 查找目标文件 }
T1:=FormatDateTime(Model,
CovFileDate(Tp.FindData.ftCreationTime)));
{ 返回文件的创建时间 }
T2:=FormatDateTime(Model,
CovFileDate(Tp.FindData.ftLastWriteTime)));
{ 返回文件的修改时间 }
T3:=FormatDateTime(Model,Now));
{ 返回文件的当前访问时间 }
FindClose(Tp);
end;function CovFileDate(Fd:_FileTime):TDateTime;
{ 转换文件的时间格式 }
var
Tct:_SystemTime;
Temp:_FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
CovFileDate:=SystemTimeToDateTime(Tct);
end;
这一次说的是如何取时间,至于大小是用(TSearchRec.size)
如果还不明白,可以再问,continue