Problem sa pamcenjem podesavanja (skin)

Problem sa pamcenjem podesavanja (skin)

offline
  • Pridružio: 19 Dec 2005
  • Poruke: 110
  • Gde živiš: S one strane Drine gde padaju mine!!!

Napravo sam program koji ima podesavanja izgleda (menjanje skinova, menjanje boje i sl.) ali ne znam kako da svaki put kada promenim neku boju ili skin i kada iskljucim program, pa ga ponovo ukljucim da ostane to podesavanje koje sam namestio. Meni uvek kada promenim nesta i ponovo pokrenem program vrati se na staro. Kako da mi program pamti podesavanja?

Unapred hvala!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

A da napravis INI fajl u koji ces da zapisujes podesavanja?
Mozes da zapises i u Registry, mada sam ja licno protivnik toga...



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Snimi sve sto je promenjeno u neki fajl (recimo neki ini) ili u registry i prilikom pokretanja samo vrati te podatke.

Npr. ako komponente koje koristis za menjanje skin-a uzimaju naziv skin-a i na osnovu toga menjaju izgled komponenti, dovoljno je da u fajl samo upises naziv skin-a koji je korisnik izabrao i prilikom ucitavanja ga samo postavi.

Dopuna: 28 Maj 2006 13:58

@bobby

Prestigao si me za minut Smile

offline
  • Pridružio: 19 Dec 2005
  • Poruke: 110
  • Gde živiš: S one strane Drine gde padaju mine!!!

Moze li neki primer za download ako ima?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ne znam sta bi mogli da ti napisemo Smile

To je isto kao i kad korisnik, recimo, upise text u edit box i ti hoces da taj text tu bude i kada se program ponovo otvori.

Na bilo koji nacin snimi podatak koji zelis da vratis na pocetku programa (uopste nije bitno kako). Kada se program pokrene, samo ucitaj tu vrednost.

Evo... za edit box bi bilo ovako:

u OnDestroy eventu
var   F: System.Text; begin   AssignFile(F, 'Data.cfg');   Rewrite(F);   Write(F, Edit1.Text);   CloseFile(F); end;

u OnCreate eventu
var   F: System.Text;   S: String; begin   AssignFile(F, 'Data.cfg');   Reset(F);   Read(F, S);   Edit1.Text := S;   CloseFile(F); end;

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ja volim drugacije da radim.. ili pisem u obican text file (TStringList ima Values property, sad da li je values, ne secam se, ali ima property kojim moze da dize ime i vrednost ako postavis "vrednost=52", znaci da nadje "vrednost" i da digne "52").

Nacin takodje na koji volim da radim je da napravim record

 TSettingsi = packed record     setings1 : integer;     setings2 : string;     setings_stagod:stagod;  end;

Onda napravis read i write procedure (za vrednosti), i read/write za ceo rekord

var   settingsi:TSettingsi; ....   ms := TMemoryStream;   try     ms.write (settingsi,SizeOf(Settingsi));     ms.SaveToFile(....)   finally     ms.free;   end;

offline
  • badam 
  • Novi MyCity građanin
  • Pridružio: 26 Maj 2006
  • Poruke: 9

A zasto ne koristite TIniFile:

Snimanje:
var f:TIniFile; begin   F:=TIniFile.Create(ChangeFilePath(Application.ExeName,'.ini');   F.WriteString('Podesavanja','NazivSkina',Edit1.text);   F.WriteBool('Podesavanja',SkinoviUljuceni',CheckBox1.Checked);   F.WriteInteger('Podesavanja','Levo',Form1.Left);   .   .   .   F.free end;

Citanje
var f:TIniFile; begin   F:=TIniFile.Create(ChangeFilePath(Application.ExeName,'.ini');   Edit1.text:=F.ReadString('Podesavanja','NazivSkina','Osnovni skin');   CheckBox1.Checked:=F.ReadBool('Podesavanja',SkinoviUljuceni',False);   Form1.Left:=F.ReadInteger('Podesavanja','Levo',0);   .   .   .   F.free end;

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Moze da koristi bilo sta za snimanje... od lokalnog fajla do nekog xml-a na web-u. Samo treba da snimi podatke Smile

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Ne volim nikako INI fajl. Ima ogranicenje od 64 KB, a nekad se ume preterati i jednostavno je sve preko toga necitljivo.

100x je jednostavnije sve pisati u obican TXT fajl, pomocu TStringList.

Ako imas text fajl u kome je sadrzina:

Height=230
Visible=1
DoSomething=1
SomeString=MaliPerica

(uzimamo da imamo List:=TStringList i da je popunjen ovim fajlom)   Form1.Height:=StrToIntDef(List.Values['Height'],200);   ime := List.Values['SomeString'];

Ko je trenutno na forumu
 

Ukupno su 785 korisnika na forumu :: 41 registrovanih, 8 sakrivenih i 736 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Pegaz_, A.R.Chafee.Jr., Andrija357, Areal84, Battlehammer, bojank, crnitrn, DH, djboj, Djole, dragon986, ekser222, goxin, Ilija Cvorovic, indja, Ivan Campo, kNikS, Kruger, Lucky_Bastard, Marko Marković, mercedesamg, Mercury, Milos ZA, moldway, Njemac, ObelixSRB, Oluj2.1, raketaš, rovac, royst33, Sirius, suton, theNedjeljko, vathra, VJ, Vlad000, voja64, Wisdomseeker, wizzardone, Yellow Pinky, yufighter