Запазване и отваряне на възли на TVirtualStringTree от файл, Блог на програмиста на Delphi

Здравейте, в тази статия бих искал да ви кажа как можете да запазите възлите във файл и след това да ги прочетете от там, за да запазите настройките на вашата програма, тоест, например, пишете продуктов каталог, трябва да покажете името на продуктите в дървото следващия път, когато го стартирате, за това използваме запазване на данните на дървото във файл, можете също да го предавате, но тази променлива все още трябва да бъде записана (съхранена) някъде, например в база данни, ще говоря за това в следващата статия заTVirtualStringTree. Да, разбира се, съхраняването на списъка на дървото в някакваDB на сървъра е доста печелившо, тъй като процентът, че данните ви в дървото не се губят, нараства, но ще говоря за това.TVirtualStringTree има 2 прекрасни събития, които се задействат при извикване на методи

  • Запазване във файл
  • SaveToStream
  • Зареждане от файл
  • LoadFromStream

Съответно, събитиетоOnLoadNode възниква, когато методите се извикват

  • Зареждане от файл
  • LoadFromStream

И събитиетоOnSaveNode възниква, когато методите се извикват

  • Запазване във файл
  • SaveToStream

Както разбирате,OnSaveNode е събитие, при което е необходимо да се запазят възлите на дървото,OnLoadNode е събитие, при което е необходимо да се заредят запазените възли в дървото.

За четене и писане са ни необходими класоветеTReader иTWriter, съответно за класове за четене и писане. Нека запазим нашето дърво във файл на събитиетоTButtonOnClick, за това пишем следния код

Да, ако напишете кодаLoadFromFile('text.txt') ;, тогава разбира се във вашияв дървото няма да се показва нищо или ще се показват обикновени йероглифи. За целта трябва да попълним нашите събития. На събитиетоOnSaveNode TVirtualStringTree напишете следния код

Създаваме нашата променлива от типWriter, като при създаването й посочваме откъде да вземем информация -Stream, в която се съхраняват нашите възли и показваме колко байта трябва да прочетем отStream. След това получаваме размера на всеки възел и след това записваме нашия възел с помощта на методаWriteString. След това просто унищожаваме тази променлива, в събитиетоOnLoadNode е почти същото, използва се самоTReader, където параметрите и методите са почти същите, само че имаReadString за четене на информация отStream. На събитиетоOnLoadNode написах следния код

И сега, ако напишете събитиеOnClick наTButton

Тогава нашите възли ще бъдат показани в дървото. В следващата статия ще говорим за това как точно тези възли могат да се съхраняват в базата данни и ще бъде много трудно да ги премахнете и промените оттам.

Изтеглете пълния източник на статията (с последния урок заTVirtualStringTree ) тук