pomoć oko okvira za listu

pomoć oko okvira za listu

offline
  • Pridružio: 29 Jun 2008
  • Poruke: 5

Može li neko da mi pomogne oko sledećeg problema:
ZADATAK: Kreirajte program sa okvirom za listu i napišite kod koji učitava podatke za listu iz tekst datoteke, pre nego što aplikacija postane vidljiva?

Hvala unapred



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

Sta znaci "okvir za listu"?
Jel'to TListView?

Kako ti izgleda datoteka sa podacima? Jel neki CSV fajl? Ako je CSV, sta koristis kao separator, a sta kao quotation?



offline
  • Pridružio: 29 Jun 2008
  • Poruke: 5

okvir za listu je ListBox.
što se datoteke tiče, obična tekst datoteka iz NotePada, a ostatak pitanja ne razumem. Inače zadatak je iz knjige Delfi za 21 dan i dat je primer za učitavanje win.ini datoteke u listu. E, sad ja ne bih da učitam ništa iz windows direktorijuma nego običan tekst fajl. Da li je moje pitanje jasnije? Početnik sam pa su možda pitanja banalna al evo celo popodne potroših tražeći po knjizi, helpu i forumima odgovor

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ajd pomoci cu.
Kazi mi da li ste ucili klasu TStringList, da bih znao da li smemo da je upotrebimo?

Dopuna: 29 Jun 2008 19:58

Zapravo, jeli zadatak uopste za skolu, ili to sam vezbas onako?

offline
  • Pridružio: 29 Jun 2008
  • Poruke: 5

nije za školu, učim delphi samostalno

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Dogovoreno.

Idemo lagano.
Otvori novi projekat i na formu postavi jedan ListBox.
Sada, u Object TreeView odaberi formu (zove se Form1 ukoliko nisi sam dao ime formi), pa dole u Object Inspectoru odaberi karticu Events.

Znaci, napravicemo jedan Event (dogadjaj) na formi.

Pogledaj spisak Eventa, trazimo neki koji se izvrsava pre pojavljivanja forme.
Prvi event koji ce da se desi je OnCreate, pa posle njega ce da se desi OnShow.
Znaci, mozemo da uradimo nesto tokom kreiranja forme (u memoriji, ne na ekranu), ili prilikom pojavljivanja.

Probacemo da iskoristimo OnCreate.
Znaci, klikni u Object Inspectoru duplo na OnCreate (zapravo na prazno polje pored OnCreate).
To ce u editoru da kreira proceduru za taj event.

Javi da li si uspeo ovo dovde, pa da nastavimo.

offline
  • Pridružio: 29 Jun 2008
  • Poruke: 5

ajmo dalje, ovo je odrađeno Smile

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

procedure TForm1.FormCreate(Sender: TObject); var   sl: TStringList; begin   sl := TStringList.Create;   //ovde ce ici jos koda   sl.Free; end;

Ovo gore znaci sledece:
U var sekciji smo definisali da cemo u ovoj proceduri koristiti objekat klase TStringList.
Nakon toga smo instancirali objekat. Objekat neke klase je uopsten (kazimo imaginaran) sve dok ga eksplicitno ne instanciras, cime objekat dobija svoje mesto u memoriji itd. itd.
Zadnjom linijom oslobadjamo taj objekat iz memorije.

Delphi sam brine o oslobadjanju objekata koji su kreirani u IDE-u (recimo forme, dugmici itd.)
Svaki objekat koji ti sam kreiras moras sam i da oslobodis, inace ce taj deo RAM memorije koji je on zauzeo ostati zauzet i nakon sto ugasis svoj program (ovo se zove memory leak).


Posto smo malo tupili teoriju idemo dalje.
Uzeli smo TStringList posto ta klasa ima odradjenu proceduru za ucitavanje tekstualnih fajlova, pa ne moramo mi da se mucimo sa pisanjem koda za otvaranje, citanje i zatvaranje fajla na disku.

procedure TForm1.FormCreate(Sender: TObject); var   sl: TStringList; begin   sl := TStringList.Create;   sl.LoadFromFile('C:\moj_tekst.txt');   sl.Free; end;
Elegantno, zar ne Smile

E sada, posto tekst vec imamo ucitan u jedan objekat, potrebno je da ga iz njega prebacimo u ListBox.

procedure TForm1.FormCreate(Sender: TObject); var   sl: TStringList; begin   sl := TStringList.Create;   sl.LoadFromFile('C:\moj_tekst.txt');   ListBox1.Items.AddStrings(sl);   sl.Free; end;

E sada tek videh da je moglo i mnogo prostije Mr. Green
procedure TForm1.FormCreate(Sender: TObject); begin   ListBox1.Items.LoadFromFile('C:\moj_tekst.txt'); end;
Nebitno, video si kako se kreira instanca neke klase Wink


Probaj da iskompajliras, i vidi da li ce da radi.
OnCreate event je malo nezahvalan da u njemu radis nesto nad vizuelnim komponentama. Moze doci do Access Violation ukoliko pokusavas da pristupis komponenti koja jos nije stigla da se instancira.
Ja licno praktikujem da u OnCreate radim samo sa ne-vizuelnim objektima (deklarisem i inicijalizujem varijable i slicno), a da vizuelna podesavanja i rad na vizuelnim objektima uradim tek u OnShow eventu.

Dopuna: 29 Jun 2008 20:31

E da, tekst treba da bude u datoteci C:\moj_tekst.txt
Da bi u programu birao koji fajl ce da se ucita, onda moras da koristis OpenDialog, ali ja to nikako ne bih radio u OnCreate eventu forme. Izgledalo bi mnogo blesavo da program pocne dijalogom za otvaranje fajla.

offline
  • Pridružio: 29 Jun 2008
  • Poruke: 5

hvala na pomoći. mnogo!!!

Ko je trenutno na forumu
 

Ukupno su 448 korisnika na forumu :: 6 registrovanih, 1 sakriven i 441 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: 4channer, cikadeda, Konda, Oluj2.1, Tas011, VJ