Збереження та відкриття вузлів TVirtualStringTree з файлу, Блог Delphi-програміста
Здрастуйте, в цій статті я хотів би розповісти як можна зберегти вузли у файл, а також їх потім вважати звідти, для того, щоб як би зберігалися налаштування вашої програми, тобто наприклад пишіть каталог товарів, треба ж при наступному запуску в дереві відображати Назва товарів, для цього ми і використовуємо збереження даних дерева у файл, можна і в стриму, але цю змінну все одно необхідно кудись записувати (зберігати) наприклад в БД, про це я розповім у наступній статті про TVirtualStringTree . Так, звичайно, зберігати список дерева в якій-небудьБД на сервері досить вигідніше, тому що відсоток того, що Ваші дані дерева не губляться виростає, але про це я розповім. УTVirtualStringTree є чудові 2 події, які спрацьовують при викликі методів
- SaveToFile
- SaveToStream
- LoadFromFile
- LoadFromStream
Відповідно подіяOnLoadNode виникає тоді, коли викликаються методи
- LoadFromFile
- LoadFromStream
А подіяOnSaveNode виникає тоді, коли викликаються методи
- SaveToFile
- SaveToStream
Як ви зрозумілиOnSaveNode - подія, в якій необхідно зберігати вузли дерева,OnLoadNode - подія, в якій необхідно завантажувати в дерево збережені вузли.
Для читання та запису нам знадобляться класиTReader таTWriter, відповідно для читання та для запису класи. ДавайтеTButton подіїOnClick збережемо дерево наше у файл, для цього напишемо наступний код
Так, якщо Ви напишіть кодLoadFromFile(‘text.txt’) ;, то звичайно у вашомудереві нічого не відобразиться або відобразяться звичайні ієрогліфи. Для цього нам потрібно заповнити наші події. На подіюOnSaveNode TVirtualStringTree напишемо наступний код
Створюємо нашу змінну типуWriter, при її створенні вказуємо звідки брати нам інформацію -Stream, в якій зберігаються наші вузли і вказуємо, скільки байт нам зчитувати зStream. Далі ми отримуємо розмір нашого вузла кожного, а потім за допомогою методуWriteString записуємо наш вузол. Далі просто знищуємо цю змінну, у подіїOnLoadNode майже те саме, тільки використовуєтьсяTReader, де параметри і методи майже теж самі, тільки тамReadString для зчитування зStream інформації. На подіюOnLoadNode я написав наступний код
І ось тепер, якщо Ви напишіть наTButton подіюOnClick
Тоді наші вузли відобразяться в дереві. У наступній статті ми поговоримо як можна ці самі вузли зберігати в базі даних і дуже складно їх звідти видалити і змінити.
Повний вихід статті (з минулим уроком поTVirtualStringTree ) качаємо тут