Jump to content

Kako izaci na kraj sa ogromnim brojem kontrola u prozoru?


AlwaysLearningNewStuff

Recommended Posts

Ja sam programer koji ima zadatak da napravi samostalno bazu podataka i GUI u vezi poslovnih ugovora. Bazu sam napravio ali muku mucim sa dizajnom GUI-a. Problem je sto imam jedno 50+ kontrola koje treba da stavim na jedan prozor, sto mi se cini nemoguce.

 

Da bih sto bolje ilustrovao problem, prilozicu 2 skice GUI-ja. Izvinjavam se za tekst na engleskom, prevescu bitne stvari u sledecim redovima.

 

Prva skica izgleda ovako. U sustini, bukvalno sve kontrole koje postoje su "nabijene" u jedan prozor.

 

Prvi i srednji skup kontrola treba da stoje jedne pored druge ( zahtev nadredjenih ). Korisnik zeli da poredi vrednosti.

 

Sto se prvog skupa kontrola tice, nije toliko los raspored, ali polje za unos teksta sa naslovom BIG TEXT je polje u koje se unosi veliki tekst, poput izvestaja. Njegove dimenzije moraju biti vece. Payment options ima fiksnih 5 stavki, cisto da napomenem.

 

Srednji skup kontrola je za dodatke ugovoru, nazivaju ih Aneks. Skica predstavlja podatke za jedan Aneks ali moj problem je sto ih ima neogranicen broj. Korisnik prosto treba da popuni podatke za aneks i doda ih pritiskom na dugme, primera radi. Zato sam dodao 3 dugmeta i strelice, 1 dugme za unos ili brisanje ili izmenu podataka i strelice da bi korisnik mogao da se krece kroz postojece unose.

 

Primetite da aneks ima ista polja kao i prvi skup kontrola. Bukvalno sam kopirao prvi skup kontrola i "zalepio" ih, a zatim obrisao visak.

 

Krajnji skup kontrola je za podizvodjacke radove. Oni su trebali da budu deo prvog skupa, kao recimo Payment options ali nisam imao mesta gde da ih stavim. Takodje njih dodaje korisnik na isti nacin kao i anekse te sam opet dodao 3 dugmeta i strelice.

 

Opet napominjem, polja sa tekstom BIG TEXT sadrzace veliki tekst poput izvestaja pa bih morao znacajno povecati njihove dimenzije.

 

Evo druge skice, izvinjavam se sto je sve na engleskom.

 

MOJI POKUSAJI DA SE SNADJEM:

 

Razmisljao sam da stavim Anekse u poseban prozor. U glavnome prozoru bih stavi dugme Aneks pa bi prozor sa Aneksima iskocio. Na taj nacin bi korisnik mogao staviti prozore jedan pored drugog kako je sefica trazila a i dobio bih u prostoru. Medjutim, ovaj pristup ne resava problem sa podizvodjackim radovima ( zadnji skup kontrola ). Bojim se da bi nastala zbrka sa takvim resenjem.

 

PITANJE:

 

Mozete li mi pomoci da pravilno izdizajniram GUI za moju desktop aplikaciju?

 

Hvala.

Link to comment
Share on other sites

Veliki broj opcija se, ili razdvaja na više prozora ili rešava preko padajućeg menija/dropdown liste. Možeš da napraviš 3 dugmeta od kojih jedno poziva levu grupu opcija, drugo poziva anex a treće poziva podizvođačke radove. Ili napravi meni sa te tri stavke i svaka poziva svoj prozor.

 

Pozdrav.

Link to comment
Share on other sites

To je i meni palo na pamet, jedino me buni dodavanje vise Aneksa/Podizvodjackih radova. Mislio sam da to uradim ovako:

 

Stavim listview kontrolu sa leve strane, 2 dugmeta sa > i < ( jedno ispod drugog ) a srednji skup kontrola sa desne. Sve to ide u novi prozor po tvojoj preporuci. Na taj nacin bi korisnik mogao da oznaci red koji treba izmeniti, klikne na > dugme i onda bi se taj red iz tabele prebacio u skup kontrola sa desne strane. Kada izmeni podatke, korisnik bi kliknuo na < i zapisi sa desne strane bi zamenili zapise u tabeli. Sto se brisanja tice, ono bi se vrsilo prosto odabirom reda i pritiskom na DELETE. Jedino nemam ideju kako da uradim dodavanje novih zapisa putem > i < dugmadi. Mozes li mi pomoci oko toga?

 

Hvala u svakom slucaju, zaista cenim pruzenu pomoc. Srdacan pozdrav!

Link to comment
Share on other sites

Izvini, nisam baš shvatio tvoj odgovor na moj post... Čemu služi to prebacivanje iz leve u desnu kolonu i obrnuto?

 

Ako hoće da uporede vrednosti u trenutnom aneksu sa vrednostima iz drugih aneksa, možda da probaš da ovako sve organizuješ:

- moguće je menjati vrednosti samo u aneksu sa kojim trenutno radiš

- vrednosti iz prethodnog/sledećeg aneksa je samo ispisana pored polja, odmaknuta malo. Znači, te vrednosti ne mogu da se menjaju, već samo stoje tu radi poređenja. Ne trebaju ti ponovo labela (ime polja) i samo polje, već je jednostavno ispisan broj. Tako ćeš uštedeti na prostoru.

- Radi preglednosti, možeš te vrednosti da organizuješ u jednu kolonu iznad koje će pisati o kom se aneksu tačno radi.

 

Pozdrav.

Link to comment
Share on other sites

Nema problema, pokusacu da pojasnim:

 

Dakle, oni zele da porede vrednosti iz prve kolone sa vrednostima iz srednje kolone ( aneksom ). To ce se raditi dok se unose podaci za aneks, pa tvoj predlog da pored ili ispod polja za unos teksta dopisem vrednost iz prve kolone zvuci sjajno.

 

Moj problem sa "prebacivanjem" iz leve u desnu je vezan za koncept prikazivanja vise aneksa. To mi je rak-rana, sto ih moze imati mali milion.

 

Dakle, sto se tice poredjenja, mislim da je tvoj predlog najbolje resenje. Edit kontrole ( ili textbox ili polje za unos texta ili kako ih vec nazivate ) imaju cuebanner tako da bih tekst cuebannera mogao da mi posluzi za implementaciju tvoga predloga.

 

Ali ja stvarno ne znam kako da izdizajniram GUI za unos nepoznatog broja aneksa. Moj nerazumljivi post je opisivao donju skicu:

 

post-52700-1416533364_thumb.png

 

Nadam se da su stvari sada jasnije. Moj problem je sto je jedno od polja RichEdit kontrola ( treba mi ogroman za tekst, poput izvestaja ) a ta kolicina teksta ne bi mogla da stane u celiju. Ako bih uspeo ovaj deo da resim, mislim da bih imao dovoljno podataka da resim moj problem.

 

Nadam se da sam sve objasnio, ako treba nesto opet da objasnim ili dodam, nema problema.

 

Srdacan pozdrav!

Link to comment
Share on other sites

Nazalost nemam vremena da napravim GUI na predlozen nacin, u frci sam sa vremenom. Za sada mi je jedini problem kako da napravim mehaniku za unos vise Ugovora, odnosno Aneksa.

 

Sto se tice poredjenja vrednosti iz ugovora, i aneksa koji se trenutno unosi, prihvaticu predlozeno resenje da dopisem, recimo crvenim slovima, vrednost iz ugovora pored "kucica" za unos teksta. Time mogu ustedeti dosta prostora. Kao sto rekoh, jedan ugovor moze imati vise Aneksa, a na mojim slikama je mehanika za unos samo jednog.

 

Ako bi mogao tu da mi pomognes dugovao bih ti pice :)

 

Ja sam u zadnjem postu prilozio skicu mog nespretnog resenja u Paint-u ( tabela sa leve, dugmad u sredini za dodavanje/ izmenu, i polja za unos sa desne ).

Link to comment
Share on other sites

Što se ove skice tiče, koju si stavio... Jel' tu tabelu vidi korisnik ili ne?

 

Što se unošenja aneksa tiče, šta ti je problem kod unošenja više aneksa? Ti bi hteo da se na neki način vide svi aneksi ili nešto drugo?

 

Ja bih ti predložio da samo negde u donjem delu prozora taviš dugmiće: "Sačuvaj" i pored njega "Novi aneks". Prvo bi, naravno, unete podatke snimilo u bazu, a drugo dugme bi resetovalo polja i napravilo mesta u bazi, za novi aneks. Naravno, tu bi trebalo da bude i dugme "Obriši aneks", koje bi uklonilo zapis aneksa iz baze.

Link to comment
Share on other sites

Tako sam i ja zamislio... Tvoj predlog odgovara mojoj skici #2 iz prvog posta.

 

Stos je u tome da korisnik moze napravi gresku prilikom unosa pa mu treba omoguciti da je ispravi. Recimo, unese tri aneksa, i shvati da prvi ne valja. Sad mu treba omoguciti da se "vrati nazad"i ispravi te podatke posto se trenutno nalazi na trecem aneksu.

 

Ja sam mislio da stavim "strelice" kao na prethodnim skicama ali ovaj nacin je zahtevan sa tacke memorije -> morao bih sve unose smestiti u promenljive sto moze biti jako sklono bagovima...

 

Zato sam mislio da stavim unose u neku tabelu ( listview ) ili nekako da ih smestim u treeview kontrolu, kako bih olaksao sebi programiranje...

Link to comment
Share on other sites

@ Always

Meni je jedino logično da se podaci upisuju u bazu i iz nje izvlače, kakve promenljive, kakvi bakrači... Ako već razmišljaš da ne stavljaš podatke u bazu onda to uradi preko niza a ne preko promenljivih. Doduše, ne znam ništa o tehnologijama u kojima radiš, pričam napamet, ali promenljive, nizovi i sl. spadaju u osnove programiranja pa pretpostavljam da je to svuda manje-više isto...

 

Korisnik apsolutno treba da može da ispravi svoje greške i iz drugih aneksa, ali je bolje da uvek može da radi samo sa jednim aneksom a ne sa više u isto vreme. Iz prostog razloga što uvek moraš poći od toga da će korisnik praviti greške. Što više slobode mu daš, više grešaka može da napravi. Rad sa 3 aneksa u isto vreme znači mogućnost da napravi gluposti u 3 aneksa istovremeno...

 

Pozdrav.

Link to comment
Share on other sites

@ Always

Meni je jedino logično da se podaci upisuju u bazu i iz nje izvlače, kakve promenljive, kakvi bakrači... Ako već razmišljaš da ne stavljaš podatke u bazu onda to uradi preko niza a ne preko promenljivih. Doduše, ne znam ništa o tehnologijama u kojima radiš, pričam napamet, ali promenljive, nizovi i sl. spadaju u osnove programiranja pa pretpostavljam da je to svuda manje-više isto...

 

Korisnik apsolutno treba da može da ispravi svoje greške i iz drugih aneksa, ali je bolje da uvek može da radi samo sa jednim aneksom a ne sa više u isto vreme. Iz prostog razloga što uvek moraš poći od toga da će korisnik praviti greške. Što više slobode mu daš, više grešaka može da napravi. Rad sa 3 aneksa u isto vreme znači mogućnost da napravi gluposti u 3 aneksa istovremeno...

 

Pozdrav.

 

Da bi podatke upisao u bazu trebaju ti promenljive koje ce da ih sacuvaju is kontrola ( textbox, dugme itd... ). U pravu si sto se tice aneksa, vise njih = veci problemi ali nisam pametan sto se dizajna tice.

 

Medjutim, ovo resenje je izvrsno, jedino me brine kako da zastitim korisnika od ubacivanja previse prozora ( da se ne srusi program zbog pucanja memorije... ). Ali to je pitanje programiranja, pa cu ga resiti negde drugde van ovog foruma...

 

Ja sam sve napravio kao u skici sa linka ( radi super, samo par Mikrosoftovih bagova da resim, i bice super ), ako imas neke sugestije u vezi poboljsanja necu zameriti :)

 

 

Link to comment
Share on other sites

tabovi se kreiraju dinamicki. missim, valjda moze. posto je desktop aplikacija, napravi veci prozor da mogu da se posteno prosire ova multi line polja, i onda ih nateraj da koriste velike monitore. :)

 

0iF5PUZ.jpg

Nesto slicno je i meni predlozeno ovde. Puno hvala na sugestiji, ali problem je sto ce im stvarno trebati veliki monitor sto se tvog dizajna tice. Problem nije u dizajnu vec u tehnologiji koju koristim za programiranje ( Mikrosoft bas ume da coveku j*be kevu za medalju :angry: ). Medjutim, ako se skupovi kontrola preklapaju, iako opet imam veliki prozor, na rezoluciji 1024 X 768 dobija se prozor 1/4 ekrana od 17" sto nije toliko lose ( ako stane na 800 X 600 ima da pevam! ).

 

Hocu reci da smatram tvoje resenje najboljim, ali usled hardverskih ogranicenja koja moram uzeti u obzir moram ici sa skicom koju sam gore linkovao...

 

Puno hvala, srdacan pozdrav!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
powered by