Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Korištenje Frames-a

[es] :: Pascal / Delphi / Kylix :: Korištenje Frames-a

[ Pregleda: 1320 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Korištenje Frames-a30.01.2010. u 20:49 - pre 172 meseci
Molio bih za savjet, vaše iskustvo, kada koristiti, a kada ne kontrolu tFrames.

Povezano je s temom "Vidljivost panela"

Primjer je sljedeći:
Na jednoj formi imam 2 panela koji ma je Allign := alClient, te su u stvari, jedan ispod drugog.
U slučaju kada je to forma "Atikli" tada mi je na jednom panelu grid za pregled/brisanje, a na drugom unos/izmjena. Program radi OK, mada je malo nezgodno pri programiranju jer nekada se ne može doći do panela da bi ga se dovelo napred ili poslalo odozada pa se mora ići na "Structure" i tamo selektirati panelu, pa tek onda na BrigToFront...
Sada sam to zamjenoi s PageControl, a TabVisible postavljam u OnShow forme na false, tako da kod prorgramiranja nemam problema s izmjenom pregled - unos.

Iskušao sam kontrolu Frames (ne znam zašto ju ranije nisam nikada koristio!) i izgleda mi odlično upravo za ovakakv primjer. Kakva su vaša iskustva s njom? Kada ju koristiti, a kada ne? Ako se koristi, da li kod pisati u unitu u kom je definiran Frame ili u unitu gdje je postavljen? Da li sve kontrole koje se koriste (u npr unosu stavki) staviti u frame ili samo one koje mogu biti zajedničke za unos i pregled, pa za unos i pregled postaviti isti frame na formu?

Želio bih izbjeći da nešto što mi se na prvi pogled svidi ne koristim pretjerano. Isti je slučaj bio prije nešto godina kada sam otrkrio Store procedure u fb serveru. Napisao sam program za servis koji je sve odrađivao preko njih, upis, pregled, baš sve, mislim da nisam imao niti jedan SQL unutar programa... moguće je i to, ali nije baš najpametnije rješenje...

Budući da mi predstoji bitnija izmjena jednog programa (: treba se odlučiti da li koristiti PageControl ili Frame. Svaka pomoć i svajet su dobrodošli.
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: Korištenje Frames-a01.02.2010. u 11:48 - pre 172 meseci
Po meni, TFrame je vrlo korisna container komponenta, ali u pojedinim slučajevima, kada se ne iskoristi kako je projektovana, može da donese više glavobolja nego koristi. TFrame je zamišljena kao zamena za forme, u tom smislu da se uvek koristi jedna forma u kojoj se onda prikazuje TFrame po želji. Mislim da je TFrame najkorisniji kod modularnih programa jer omogućava izdvajanje pojedinih elemenata aplikacije tako da mogu da se po potrebi dodaju i prikazuju u jedan glavni TForm, a sami TFrame se nalaze u DLL-ovima (na primer).

E, sada, obzirom da sam pratio šta si ti ranije pitao u prethodnoj temi, mislim da ti je pristup izradi programa koji radiš malo pogrešan. Zašto? Pa kada imaš više nezavisnih i različitih delova jednog programa koje "trpaš" u jedan TForm, na bilo koji način, onda ti to u kasnijim fazama razvoja programa može napraviti ozbiljne probleme. Moj pristup izradi takvih programa je da koristim odvojene forme za prikaz i unos podataka. Glavna forma je mesto gde se obično prikazuju najbitniji podaci za ceo program ili se jednostavno samo prikazuje glavni meni ili neki drugi sistem koji korisnik koristi za izbor opcija programa. Svaka opcija najčešće otvara novu formu (ili u tvom slučaju prikazuje drugi Frame unutar glavne forme). Jedan drugi pristup izradi ovakvog programa bi bio da koristiš jedan main form koji je tipa MDIForm (FormStyle = fsMDIForm) a sve ostale forme su tipa fsMDIChild ili fsNormal (zavisno od potrebe). Ovo je takozvani MDI ili multiple document interface. Iskreno, ja izbegavam da pravim programe na ovaj način.

Razlog zašto bih izbegao da koristim TFrame je što ima nedostatke koji, ako se ne poznaju, mogu da naprave velike probleme. Ako praviš program gde je svaki logički deo istog izdvojen u posebnu formu, onda sebi značajno olakšavaš rad u kasnijoj fazi. Na taj način ti je mnogo lakše da kasnije dodaš, promeniš ili ukloniš nešto iz tog programa.

Ako ti je baš stalo da tvoj program ima samo jedan vidljivi prozor (formu), onda ti i dalje preporučujem da se držiš TPageControl. Ako ti standardna verzija ne odgovara, onda pređi na neku 3rd party varijantu. Preporučujem DevExpress komponente. Ako hoćeš besplatne komponente, onda pogledaj malo JVCL. TMS Component Pack je takođe dobar, mada mislim da ima previše bagova da bi bio upotrebljiv (bar za moj ukus). Raize Component Pack je takođe dobar. TMS i Raize su komercijalni paketi, a JVCL je open source.

Šta god da izabereš, moj ti je savet da prvo u glavi ili na papiru dobro isprojektuješ ceo svoj program tako što ćeš da ga podeliš na logičke i funkcionalne delove. Korisnički interfejs se dizajnira na kraju, kada imaš kompletnu sliku o tome šta sve tvoj program treba da radi i kako. Ako izradi programa pristupaš prvo sa aspekta korisničkog interfejsa, onda ćeš imati mnogo problema, jer ćeš sigurno u toku izrade istog da menjaš koncept i da dolaziš do novih ideja koje si prevideo u početku. To je lekcija koju moraš da naučiš ako želiš da napraviš dobar program.

Nadam se da sam ti ovime pomogao da izabereš kako ćeš dalje da nastaviš :)

"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Korištenje Frames-a

[ Pregleda: 1320 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.