Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2014, 17:55   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию сортировка в listview

помогите подправить код чтобы выводилось сначала папки потом файлы

Код:
procedure TForm1.UpdateFile;
var
Handle:THandle;
FindData:TWin32FindData;
temp_ext,result,Temp_Cap:String;
Attr:Integer;
dDir:string;
begin
SetCurrentDir(dDir);
ListView1.Clear;
dDir:='c:\';
Handle:=FindFirstFile(PChar(dDir+'*'),FindData);
if Handle<>INVALID_HANDLE_VALUE then
 try
  while FindNextFile(Handle,FindData) do
  begin
   with ListView1.Items.Add do
    begin
    Temp_Cap:=ExtractFileName(FindData.cFileName);
    if (FindData.dwFileAttributes and faDirectory)<>faDirectory then
    Caption:=(copy(Temp_Cap,1,pos('.',Temp_Cap)-1)) else Caption:=Temp_Cap;
    temp_ext:=ExtractFileExt(FindData.cFileName);
    if (FindData.dwFileAttributes and faDirectory)=faDirectory then
    SubItems.Add('[Папка]')
    else
    SubItems.Add(Copy(temp_ext,2,Length(temp_ext)-1));
    if (FindData.dwFileAttributes and faDirectory)<>faDirectory then
    SubItems.Add(FloatToStrF(FindData.nFileSizeHigh+FindData.nFileSizeLow,ffNumber,18,0)) else SubItems.Add('');
    SubItems.Add(FileTimeToDateTimeStr(FindData.ftLastWriteTime));
    Result:='';
    if (FILE_ATTRIBUTE_ARCHIVE and FindData.dwFileAttributes)>0 then Result:=Result+'a' else Result:=Result+'-';
    if (FILE_ATTRIBUTE_READONLY and FindData.dwFileAttributes)>0 then Result:=Result+'r' else Result:=Result+'-';
    if (FILE_ATTRIBUTE_HIDDEN and FindData.dwFileAttributes)>0 then Result:=Result+'h' else Result:=Result+'-';
    if (FILE_ATTRIBUTE_SYSTEM and FindData.dwFileAttributes)>0 then Result:=Result+'s' else Result:=Result+'-';
    SubItems.Add(Result);
    end;
  end;
  finally
  ListView1.Items.EndUpdate;
  end;
HTTqp вне форума Ответить с цитированием
Старый 29.01.2014, 20:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.UpdateFile;
var
Handle:THandle;
FindData:TWin32FindData;
temp_ext,result,Temp_Cap:String;
Folders:TStringList;
Attr,i:Integer;
dDir:string;
begin
SetCurrentDir(dDir);
ListView1.Clear;
dDir:='c:\';
Handle:=FindFirstFile(PChar(dDir+'*'),FindData);
if Handle<>INVALID_HANDLE_VALUE then
 try
  Folders:=TStringList.Create;
  while FindNextFile(Handle,FindData) do
  begin

    Temp_Cap:=ExtractFileName(FindData.cFileName);
    temp_ext:=ExtractFileExt(FindData.cFileName);

    if (FindData.dwFileAttributes and faDirectory)=faDirectory then begin
     Folders.append(Temp_Cap);
     
   end else

   with ListView1.Items.Add do   begin
    if (FindData.dwFileAttributes and faDirectory)<>faDirectory then begin
      Caption:=copy(Temp_Cap,1,pos('.',Temp_Cap)-1)
      SubItems.Add(Copy(temp_ext,2,Length(temp_ext)-1));
      SubItems.Add(FloatToStrF(FindData.nFileSizeHigh+FindData.nFileSizeLow,ffNumber,18,0)) else SubItems.Add('');
      SubItems.Add(FileTimeToDateTimeStr(FindData.ftLastWriteTime));
      Result:='';
      if (FILE_ATTRIBUTE_ARCHIVE and FindData.dwFileAttributes)>0 then Result:=Result+'a' else Result:=Result+'-';
      if (FILE_ATTRIBUTE_READONLY and FindData.dwFileAttributes)>0 then Result:=Result+'r' else Result:=Result+'-';
      if (FILE_ATTRIBUTE_HIDDEN and FindData.dwFileAttributes)>0 then Result:=Result+'h' else Result:=Result+'-';
      if (FILE_ATTRIBUTE_SYSTEM and FindData.dwFileAttributes)>0 then Result:=Result+'s' else Result:=Result+'-';
      SubItems.Add(Result);
    end;
   end;

  end;
  for i=0 to Folders.count-1 do with ListView1.Items.insert(i) do begin
   SubItems.Add('[Папка]');
   Caption:=Folders[i];
  end;
  Folders.free;
  finally
  ListView1.Items.EndUpdate;
  end;
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2014, 16:11   #3
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Stiler, выдает ошибку
HTTqp вне форума Ответить с цитированием
Старый 30.01.2014, 17:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я так понимаю догадываться на какой строке мне придется?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2014, 17:05   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

коли назвался груздем, так и в кошик полезай, думал в сказку попал
eval вне форума Ответить с цитированием
Старый 30.01.2014, 17:43   #6
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Прошу прощение за флуд, все сделал, все спасибо, Stilet тебе в рему +
HTTqp вне форума Ответить с цитированием
Старый 30.01.2014, 18:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сделал - хорошо )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка в ListView and1733 C++ Builder 11 27.06.2013 12:50
Сложная сортировка в ListView Puhovoi Помощь студентам 0 02.01.2012 12:38
Сортировка данных в ListView Shouldercannon Общие вопросы Delphi 5 05.07.2011 15:11
Сортировка и цвет строк в ListView zver777 Общие вопросы Delphi 1 26.03.2010 22:24
ListView сортировка Viten2 Компоненты Delphi 6 25.03.2007 00:28