Створюємо найпростіший файловий менеджер в delphi, delphi, компоненти delphi, вихідні коди delphi

function SlashSep (Path, FName: string): string;

if Path [Length (Path)] про 'V then Result: = Path + + FName else

Result: = Path + FName; end;

Функцію siashsep вже один раз використовували, але згадаємо, що тут відбувається. Ця функція отримує два параметри - шлях до файлу та ім'я файлу, які вона повинна з'єднати в один рядок, щоб вийшов повний шлях до файлу. Але спочатку ми повинні перевірити, чи закінчується шлях (перший отриманий параметр - Path) знаком V. Мінлива Path - це рядок типу string, а значить, ми можемо до неї звертатися як до масиву символів. Щоб отримати доступ до першого символу, ми повинні написати Path.

Нам потрібно перевірити останній символ, тому В квадратних дужках використовується Length (Path). Функція Length повертає довжину переданої їй строкової змінної, а це значить, що в квадратних дужках ми вказуємо довжину рядка, т. Е. Останній символ.

Якби потрібен був передостанній символ, то ми б написали Path [Length (Path) -1]. В цьому випадку з довжини рядка віднімається одиниця і в результаті виходить індекс передостаннього символу.

Якщо останній символ НЕ дорівнює \\ додаємо спочатку його, а потім ім'я файлу. Якщо цей символ в рядку має місце, то потрібно тільки додати ім'я файлу та записати в змінну Result, щоб функція повернула повний шлях до файлу.

З цією функцією покінчено, і пора повернутися до нашого перерахуванню файлів. Наступним йде виклик системної функції SHGetFileinfo. Вона повертає інформацію про файл. Не будемо на ній зараз зупинятися. В принципі, вона проста і ви, напевно, зможете її зрозуміти за кодом, а якщо немає, то до неї ми повернемося трохи пізніше.

Зараз нас більше цікавить робота з компонентом Listview. Наступний код додає в список новий елемент: Listviewi.items.Add. Це робиться всередині конструкції with, значить, всі наступні дії між begin і end будуть виконуватися з новим елементом. А саме - змінюється заголовок нового елемента:

У кожного елемента є властивість Subitems, яке зберігає додаткову інформацію. Коли компонент знаходиться в режимі відображення іконок, то додаткова інформація, хоч я знаю. Але якщо вибрати в властивості viewstyle значення vsReport, то компонент буде виглядати у вигляді таблиці, де кожен стовпець відображає додаткову інформацію, як це показано на рис. 11.38.

Щоб додати додаткові колонки до нового елементу, треба виконати оператор:

Щоб колонки відображалися, потрібно у властивості columns вказати імена колонок. Якщо імена колонок не вказані, то нічого відображатися не буде. І не забувайте, що при описі колонок перша - це заголовок елементів, інші - це додаткові параметри в порядку їх додавання за допомогою subitems.Add.

І останнє, ЩО треба ще розглянути, - ЦЕ функція FileTimeToDateTimeStr, яка переводить час / дату з системного формату в рядок. Її код можна побачити в лістингу:

function FileTimeToDateTimestr (FileTime: TFileTime): string;

LocFTime: TFileTime; SysFTime: TSystemTime; Dt, Tm: TDateTime; begin

FileTimeToLocalFileTime (FileTime, LocFTime); FileTimeToSystemTime (LocFTime, SysFTime); try

with SysFTime do begin

Dt: = EncodeDate (wYear, wMonth, wDay);

Tm: = EncodeTime (wHour / wMinute, wSecond, wMilliseconds);

Result: = DateTimeToStr (Dt + Tm); except

На самому початку ми наводимо дату файлу в Універсальний скоординований час (за Гринвічем). Для ЦЬОГО використовується функція FileTimeToLocalFileTime, у яких два параметри:

  • змінна типу TFileTime, яку потрібно перевести;
  • змінна, в яку буде записаний результат.

Другим етапом ми переводимо Універсальний скоординований час в системний час вашого комп'ютера. Для цього потрібна функція FileTimeToSystemTime, у якій також два параметри:

  • Універсальний скоординований час;
  • змінна результату.

Тепер у нас дата зберігається в змінної sysFTime і має тип TSystemTime. Мінлива SysFTime має тип структури і наступні властивості:

  • wYear - рік;
  • wMonth - місяць;
  • wDay - день;
  • wHour - годинник;
  • wMinute - хвилини;
  • wsecond - секунди;
  • wMilli seconds - мілісекунди.

Все це числа, і нам треба перетворити їх в рядок, але так, щоб рядок дати виглядала відповідно до локальних настройками системи. Якщо ми пишемо програму, яка буде виконуватися в однотипної системі (наприклад, в російській версії Windows з російським уявленням дати і часу), то ви можете скористатися функцією IntToStr, щоб перетворити все поля в рядки і відформатувати їх на свій розсуд.

Однак зараз зробимо більш універсально. Спочатку дані перетворимо в формат DateTime. Для цього є функції EncodeDate і EncodeTime. Ці функції створюють змінні типу TDate і TTime на основі переданих їм числових значень.

Отримавши ці змінні, ми об'єднуємо їх в більш загальний формат DateTime простим додаванням і переводимо в рядок за допомогою функції DateTimeToStr. Ця функція переводить дату в рядок відповідно до локальних настройками регіону в ОС Windows. Ви ж можете скористатися і функцією FormatDate, яка може створити рядок дати в будь-якому вигляді.

Допоможи проекту! Розкажи друзям про цей сайт: