C++BuilderXE 如何让listView按文件名数字排序而非字母排序

int m_nDataColSort=0;

bool IsAsc=true;

void __fastcall TForm1::RzListView4Compare(TObject *Sender, TListItem *Item1, TListItem *Item2,
int Data, int &Compare)
{
if(m_nDataColSort==0)
{

//按列表第二列排序
//Compare=CompareText(Item1->SubItems->Strings0 ,Item2->SubItems->Strings0 );
//按列表第一列排序

Compare=CompareText(Item1->Caption ,Item2->Caption );
}
}

//导入文件夹

void __fastcall TForm1::BitBtn29Click(TObject *Sender)

{

AnsiString Dir = "";

AnsiString CGstr;

if (!FolderDialog1->Execute()) return;

Dir =FolderDialog1->Directory;

//

int Trnum=0;

TSearchRec sr;

int iAttributes=0x0000003F;

int Oldlist;

if(FindFirst(Dir+"\\*.*",faDirectory,sr) == 0)

{

Oldlist = RzListView4->Items->Count;

do

{

if( !sr.Name.Pos(".") ) //sr.Name!="." && sr.Name!=".."

{

TListItem *pItem=0;

pItem=RzListView4->Items->Add();

//列表第一列,取出文件夹名进行格式化成字母格式"000"

if( sr.Name.Length()==1)
pItem->Caption="00"+sr.Name;
else if( sr.Name.Length()==2)
pItem->Caption="0"+sr.Name;
else
pItem->Caption=sr.Name; //AnsiString().sprintf("%03d",Oldlist+1); // ;

pItem->SubItems->Add(Dir+"\\"+sr.Name);

//pItem->SubItems->Add("***");

// if(CheckBox26->Checked)

// pItem->SubItems->Add(RightStr(AnsiString(sr.Name),3));

// else

// pItem->SubItems->Add("***");

//

// Ttree->Add(Dir+"\\"+sr.Name);

//Trnum+=1;

Oldlist++;

}

} while(FindNext(sr) == 0);

FindClose(sr);

}

//文件夹名排序
m_nDataColSort=0;
IsAsc=false;
RzListView4->AlphaSort();

RzListView4->Column0->Caption="序号 共"+AnsiString(Oldlist)+" " ;

}

相关推荐
烬羽1 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
郝学胜_神的一滴1 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
NE_STOP1 小时前
Vibe Coding -- 完整项目案例实操
java
荣码1 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing1 小时前
Google第三方授权登录
java·后端·程序员
明月光8181 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑11 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯11 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路15 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java