Witam, jak zrobić coś takiego jak jest np. w edytorze "Ager Web Edytor" albo w przeglądarce "Opera", czyli gdy zamykam program to otwarte w nim zakładki zapisują się i przy jego otwarciu automatycznie się wczytują, w ogóle nie mam pomysłu jak to zacząć.
Bardzo prosto, zapisujesz sobie adres pliku który masz otwarty np w pliku ini przy zamykaniu programu a przy otwieraniu wczytujesz adres oraz tworzysz zakładkę. Delphi ma fajna klasę ini wiec problemu nie ma żadnego ;)
Zapisując przed zamknięciem stan zakładek i wczytując ten stan przy uruchomieniu programu.
Zapisać do rejestru (odradzam) lub do bazy danych lub do pliku.
Jeżeli do pliku możesz to zrobić w prawie każdej postaci od pliku binarnego do pliku XML.
Nie bawiłem się nigdy programem Ager Web Edytor, ale to można wykonać na co najmniej kilka sposobów;
- Jeżeli tekst w zakładkach masz zapisany to wystarczy zapisac sobie do pliku ścieżki tych plików i podczas rozruchu programu tworzyć dynamicznie zakładki z polem tekstowym i od razu ładować tekst z zapisanych plików,
- Jeśli tekst w polach nie musi być zapisany to musisz go gdzieś zapisać - np. stworzyć sobie plik amorficzny, w którym zapiszesz wszystkie dane zakładki + tekst w niej zawarty,
- Możesz także zapisać cały komponent do pliku i podczas uruchamiania programu po stworzeniu kontrolki załadować ją z pliku;
Najprościej jest zapisać cały komponent do pliku; Jeśli to ja miałbym takie coś zrobić to utworzyłbym sobie plik amorficzny, zapisał odpowiednie dane samego komponentu (jeśli to było by konieczne) oraz dane każdej zakładki - stan modyfikacji, ilość znaków notatki, tekst itd. itp.;
Kwiestia tego co Ci pasuje i co umiesz zrobić;
aha, dzięki, a jak zapisać cały komponent ?
a i wiecie jak zrobić ścieżkę do pliku, by było coś takiego jak w HTML'u jest np: images/logo.png ( gdy index.html i folder images znajdują się w tym samym folderze)
bo nie chce wpiswać całego: c:\coś tam\coś tam, bo nie wiem na jakim dysku będzie program tylko od razu np biblioteka\zakladki.ini
DiKey11 napisał(a)
aha, dzięki, a jak zapisać cały komponent ?
Do tego trzeba wykorzystać klasę TStream
TMemoryStream
i metody WriteComponent
/ReadComponent
;
DiKey11 napisał(a)
a i wiecie jak zrobić ścieżkę do pliku, by było coś takiego jak w HTML'u jest np: images/logo.png ( gdy index.html i folder images znajdują się w tym samym folderze)
bo nie chce wpiswać całego: c:\coś tam\coś tam, bo nie wiem na jakim dysku będzie program tylko od razu np biblioteka\zakladki.ini
Nic z tego nie rozumiem... Chodzi Ci o skrócenie ścieżki? Przecież to są zwykłe operacje na łańcuchach znaków... Zawsze możesz zrobić sobie stałą z nazwą pliku biblioteki, np.:
const
PAGES_LIBRARY_NAME = 'biblioteka\zakladki.ini';
no i jeżeli będziesz się chciał odwołać do tego pliku to wystarczy pobrać ścieżkę *.exe (bez nazwy) i dodać nazwę pliku z zakładkami, np. tak:
var
iniPages: TINIFile;
begin
iniPages := TINIFile.Create(ExtractFilePath(Application.ExeName) + PAGES_LIBRARY_NAME);
i to wystarczy; Jest wiele sposobów na wykonanie tego, zastanów się jaki Ci pasuje;