第一个问题:
------------------------------------------------------------
我做了一个程序,界面是这样的:
最上面是menu,下面是toolbar
再下面用的是一个bevel,bevel旁边是一个richedit
我把bevel作为容器,放了一个drivercombobox,下面是个directorylistbox,然后又3放了一个filtercombobox,下面又放了一 个filelistbox,
问题是:
我设置bevel可以随着窗体的大小改变而改变高度,但bevel里的directorylistbox和filelistbox该怎么样让他们也随着窗体的高度而改变高度呢?
-------------------------------------------------------------
第二个问题:
怎样取得一个文件的相关属性,我在richedit里用opendialog 载入一个文件
我想取得如下属性:
1.文件大小
2.文件创建时间
3.文件最后一次修改时间希望高手不吝赐教,一但得到答复,马上结贴给分~决不食言~

解决方案 »

  1.   

    第一个问题
    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
       );
    这个问题你自己看看帮助就解决了,还要问
      

  2.   

    很感谢上面的朋友,只是我是刚刚接触delphi,你所说的函数我也知道,可是我不知道该怎么样运用,如果能给出实例那就最好了,希望哪位朋友不吝赐教,分数一定悉数奉上~(我说的是文件属性的取得)
      

  3.   

    放到panel里,然后设置他们的align即可,不过可能panel数目稍多点
      

  4.   

    在SHOW时,设定控件大小=容器的大小下面是一个查询目录的Function,了解对你有应该有帮助
    其中有一个类型(在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;
      

  5.   

    很感谢stevenpeng(第九种兵器) 做的以上的答复~分数肯定给你,但我还是看不出来和我的要的问题的答案有什么联系~~(要是有高手看到我的这段话千万别说晕)
    一句话,我还是希望能有高手给出关于文件属性的实例,分数80,另外20是给stevenpeng(第九种兵器) 的~
      

  6.   

    如果是文件查找相关操作可以用上一个例子,
    不明白没关系,下面可以取文件大小,日期等,
    有问提可以再问,我还会继续留意一段时间.
    你要与你的要求一模一样的程序吗?
    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;
    { 返回文件大小}
      

  7.   

    也许开始说的不够清楚
    我再来讲讲吧
    先定义一个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;
      

  8.   

    上一次说的是如何找
    这一次说的是如何取时间,至于大小是用(TSearchRec.size)
    如果还不明白,可以再问,continue
      

  9.   

    谢谢stevenpeng,很明白了~~结帖~