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

problem sa stringgrid i treeview komponentama

[es] :: Pascal / Delphi / Kylix :: problem sa stringgrid i treeview komponentama

[ Pregleda: 2159 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zliki
Vanja Virijevic
Krusevac

Član broj: 101462
Poruke: 155
*.vdial.verat.net.



Profil

icon problem sa stringgrid i treeview komponentama18.08.2007. u 00:14 - pre 203 meseci
Pozdrav svima. Imam mali problem pa rekoh da pitam. Problem je sledeci (tacnije ima ih dva):

1. Kako da sumiram vrednosti u odredjenoj kolini stringgrida?
Da pojasnim. Imam odredjenu formu na koju sam dodao komp stringgrid, pritom je broj redova u kontroli varijabilan.U celije unosim brojeve (decimalne) i sada zelim da izracunam sumu tih brojeva. Preveo sam iz stringa u float ali mi sumiranje ne ide nikako.

2. Kako da dodelim numericku vrednost grani treeview kontrole, odnosno kako da saberem sve vrednosti podgrana i prikazem ih, kao zbir, u naslovu grane kojoj pod grane pripadaju?

Nadam se da sam bio dovoljno jasan u objasnjenju problema.

Molim vas da mi pomognete.

Veliki pozdrav.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem sa stringgrid i treeview komponentama18.08.2007. u 10:11 - pre 203 meseci
> 1. Kako da sumiram vrednosti u odredjenoj kolini stringgrida?
> Da pojasnim. Imam odredjenu formu na koju sam dodao komp stringgrid, pritom je broj redova u kontroli varijabilan.U celije unosim brojeve
> (decimalne) i sada zelim da izracunam sumu tih brojeva. Preveo sam iz stringa u float ali mi sumiranje ne ide nikako.

Sumiranje znači sabiranje uz čuvanje prethodnih rezultata, dakle treba ti jedna promenljiva koja će čuvati konačan zbir i koju ćeš uvećavati sa vrednostima iz grida. Šta je tebi tačno problem, kretanje po gridu, zbrajanje...?

Primer pišem napamet pa verovatno ima nekih grešaka.
Code:

var
  Suma: Double;
  i: Integer;
begin
  Suma := 0;
  for i := 0 to StringGrid.Rows.Count - 1 do
     Suma := Suma + StrToFloat(StringGrid.Cells[1, i]);
end;


> 2. Kako da dodelim numericku vrednost grani treeview kontrole, odnosno kako da saberem sve vrednosti podgrana i prikazem ih, kao zbir,
> u naslovu grane kojoj pod grane pripadaju?

Šta te ovde koči, dobijanje vrednosti treeview stavki, konverzija sume u string...? Kako uopšte puniš treeview sa podacima, možda ti je lakše da zbrajanje uradiš u tom trenutku.
 
Odgovor na temu

zliki
Vanja Virijevic
Krusevac

Član broj: 101462
Poruke: 155
*.vdial.verat.net.



Profil

icon Re: problem sa stringgrid i treeview komponentama18.08.2007. u 22:37 - pre 203 meseci
Hvala puno na pomoci. Kod naravno radi. Resio si mi veliki problem.
Sto se tice druge stavke mog pitanja problem se u stvari sastoji u sledecem. Naime zamislio sam da povezem treeview i pagecontrol pa kada kreiram granu u isto vreme mi se kreira i tabsheet sa istim naslovom. Moje pitanje glasi ovako.
Da li je moguce sledece (ako jeste, onda kako) uraditi:
-kada kreiram granu1 da mi se kreira tabsheet1 na kome se nalaze na pr. tri edit kontrole i button tako da klikom na button u trecoj edit kontroli se prikaze zbir vrednosti prve dve edit kontrole.
-kada kreiram granu2 da se kreira tabsheet2 sa stringgridom (koji ima napr. dve kolone), editom i buttonom pa se klikom na button u editu prikazuje suma u odredjenoj koloni.
-kada kreiram podgranu1 na grani2, da se kreira takodje tabsheet koji je identican kao tabsheet1 bez obzira sto se radi o podgrani, odnosno nivoi nisu isti.

Naravno, neke dobijene rezultate za svaki tabsheet treba prikazati u nazivu (na pr. u zagradi naziva) svake grane i podgrane u treeview kontroli.

Jednostavno receno ovo je zamisljeno da radi kao wizard ali mi je problem sto nemam definisan broj i raspored tabsheetova vec se njihov broj menja. Ono sto znam je da imam nekoliko kombinacija izgleda tabsheetova koji se ponavljaju bilo da se radi o glavnoj grani ili njenoj podgrani.

Stvarno se nadam da sam jasno opisao problem koji me muci.
Ukoliko to nije slucaj, pojasnicu ponovo.

Hvala jos jednom za onaj kod.

Pozdrav
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem sa stringgrid i treeview komponentama19.08.2007. u 02:09 - pre 203 meseci
> -kada kreiram granu1 da mi se kreira tabsheet1 na kome se nalaze na pr. tri edit kontrole i button tako
> da klikom na button u trecoj edit kontroli se prikaze zbir vrednosti prve dve edit kontrole.

Novi tabsheet možeš dobiti na sledeći način:

Code:

var
  Temp: TTabSheet;
begin
  Temp := TTabSheet.Create(PageControl1);
  Temp.PageControl := PageControl1;
  Temp.Caption := 'Proba';
  PageControl1.ActivePage := Temp;


Što se tiče tih dodatnih kontroli koje ti trebaju, najlakše je da napraviš novu formu, dodaš tri edita, button i uradiš šta želiš (pretpostavljam da ti nije teško da sabereš te dve vrednosti). Tu formu možeš na sledeći način dodeliti novom tabsheetu:

Code:

  frm: TForm2;
begin
  frm := TForm2.Create(Application);
  frm.Parent := Temp; // Temp je novi tabshet iz prethodnog primera
  frm.BorderStyle := bsNone;
  frm.Align := alClient;
  frm.Show;


> -kada kreiram granu2 da se kreira tabsheet2 sa stringgridom (koji ima napr. dve kolone), editom i buttonom pa se klikom na button u
> editu prikazuje suma u odredjenoj koloni.

Ovde takođe napravi posebnu formu sa željenim kontrolama i funkcionalnošću i ubaci je na tabsheet.

> -kada kreiram podgranu1 na grani2, da se kreira takodje tabsheet koji je identican kao tabsheet1 bez obzira sto se radi o podgrani, odnosno nivoi nisu isti.

Ovo nisam shvatio, napravi šablon formu kao i za prethodne slučajeve i dodeli je tabu. Ako je potrebno da neke od vrednosti iz jedne forme (taba) kopiraš u drugu, uradićeš to ručno, kontrolu po kontrolu.
 
Odgovor na temu

zliki
Vanja Virijevic
Krusevac

Član broj: 101462
Poruke: 155
*.vdial.verat.net.



Profil

icon Re: problem sa stringgrid i treeview komponentama19.08.2007. u 19:47 - pre 203 meseci
Hvala, ovo sve radi super.

Samo te molim za odgovor na pitanje:

Kako da neku referentnu vrednost (double) koju sam dobio preracunavanjem na nekom od tabsheetova ubacim u naziv grane u treeview kontroli koja ima isti naziv kao dati tabsheet?

Da pojasnim, svakoj grani treeview odgovara jedan tabsheet na kome se nalaze odredjene kontrole za unos podataka. Nakon obrade tih podataka na svakom tabsheetu dobijam nekakvu referentnu vrednost (rezultat kalkulacije). E sada tu dobijenu vrednost zelim da dodam nazivu date gtrane napr. PRVAGRANA (RezultatSaTabSheeta). To zelim da uradim zato sto mi je potrebno da se te rezultujuce vrednosti sabiraju za svaku granu ponaosob.
napr. PRVAGRANA ima tri podgrane: PRVAPODGRANA, DRUGAPODGRANA, TRECAPODGRANA. Tim podgranama odgovara po jedan tabsheet u pagecontrolu. Svaki tabsheet ima nekakve edit kontrole za unos podataka. E sad kad unesem podatke u edit kontrole, izvrsim izracunavanje, dobijem neku vrednost (double), e ta vrednost mi je rezultanta za taj tabsheet odnosno za tu granu (napr. za PRVAPODGRANA). To isto ponovim za ostale dve podgrane. Sada hocu da te tri vrednosti saberem i dobijeni rezultat mi predstavlja vrednost grane PRVAGRANA I TABSHEETA KOJI SE ZOVE prvagrana.

Uh, bas sam bio opsiran ovog puta. Nadam se da si shvatio poentu.

Da skratim pricu, jednostavno treba mi nacin da sabiram nekakve vrednosti po nivoima, od najnizih do najviseg. Zato su tu treeview i pagecontrol kontrole. Problem je sto ne znam unapred koliko imam grana i podgrana (odnosno tabsheetova) vec se to definise kada se startuje program.

Hvala jos jednom na dosadasnjim odgovorima, zaista meni pocetniku puno znace.

Molim te da razmotris moj problem.

Pozdrav.

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem sa stringgrid i treeview komponentama20.08.2007. u 00:45 - pre 203 meseci
> Kako da neku referentnu vrednost (double) koju sam dobio preracunavanjem na nekom od tabsheetova ubacim u naziv grane u treeview
> kontroli koja ima isti naziv kao dati tabsheet?

> Da skratim pricu, jednostavno treba mi nacin da sabiram nekakve vrednosti po nivoima, od najnizih do najviseg. Zato su tu

A šta ti je tačno tu problem? Prolaz po stavkama i podstavkama tree kontrole, pronalaženje tree stavke koja odgovara tabu, nešto treće?
 
Odgovor na temu

zliki
Vanja Virijevic
Krusevac

Član broj: 101462
Poruke: 155
*.vdial.verat.net.



Profil

icon Re: problem sa stringgrid i treeview komponentama20.08.2007. u 17:49 - pre 203 meseci
Evo sta je problem.

Zamisli ovakav slucaj.
Imam formu sa Treeview komp i pagecontrol komp.

- Tree komp ima jednu granu (npr. GLAVNA) i tri podgrane (PRVA, DRUGA, TRECA).
- Komp. pagecontrol ima cetiri tabsheeta (TAB_GLAVNA, TAB_PRVA, TAB_DRUGA, TAB_TRECA) i na svakom tabsheetu
se nalazi po jedna edit i jedan button.

Kako sad da uradim sledece?

1. Izaberem neki tabsheet (npr. TAB_PRVA) i u edit kontr. na njemu upisem neki broj (napr. 2,153), zatim kliknem na
button i u tom momentu se nakontroli treeview umesto teksta - PRVA pojavi tekst - PRVA (2,153). E to isto uradim
za svaki tabsheet, znaci dobijem sledece:
umesto DRUGA da pise DRUGA (x1)
umesto TRECA da pise TRECA (x2)
umesto GLAVNA da pise GLAVNA (x)

gde je:

x1,x2,x3 - neki double brojevi
x = x1 +x2 + x3


2. Kako da kad selektujem odredjenu granu (napr. DRUGA) u treeview kontr., aktivna strana u pagecontroli bude
TAB_DRUGA?

Znaci ja zelim da mi se sabiraju vrednosti po nivoima

Trebalo bi da je sad jasnije.

Veliki pozdrav.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem sa stringgrid i treeview komponentama20.08.2007. u 20:29 - pre 203 meseci
Dakle tvoji problemi su: prolaz po stavkama i podstavkama tree kontrole, pronalaženje tree stavke koja odgovara tabu i obratno.

Možeš recimo povezati TTreeNode sa TTabSheet i obratno. Kada napraviš novi tab, uradi sledeće:

TreeNode.Data := NoviTab;
NoviTab.Tag := Longint(TreeNode);

Kada se klikne na dugme u tabu, treba primeniti obrnuti proces, prvo dobiješ TTabSheet objekat (bilo preko PageControl.ActivePage ili na drugi nacin, zavisno od organizacije tvog koda) i onda samo otkucaš TTreeNode(Tab.Tag) i tree stavku povezanu sa tabom. Dalje toj stavci menjaš text ili već šta ti treba.
Ako treba da promeniš vrednost i u parent nodu te tree stavke jednostavno iskoristiš njen Parent property (TTreeNode.Parent) i tako dalje.

Kada se promeni stavka u tree nodu, da bi se prešlo na drugi tab napišeš npr.
PageControl.ActivePage := TTabSheet(TreeNode.Data)

 
Odgovor na temu

zliki
Vanja Virijevic
Krusevac

Član broj: 101462
Poruke: 155
*.air.my-its.net.



Profil

icon Re: problem sa stringgrid i treeview komponentama24.08.2007. u 09:36 - pre 202 meseci
Hvala puno

Nasao sam na nekom ruskom sajtu kako se povezuju treeview i pagecontrol komponente.

http://delphi-faq.zoxt.net/227.htm

Ono sto nisam shvatio je kako da neku numericku vrednost dodelim nekoj treeview.node pa potom da sabiranjem vrednosti pridodatim na nekoliko treeview.node izvrsim njihovo sabiranje i dobijeni rezultat prikazem u glavnoj grani.

Molim za pomoc

Hvala
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem sa stringgrid i treeview komponentama24.08.2007. u 16:21 - pre 202 meseci
> Nasao sam na nekom ruskom sajtu kako se povezuju treeview i pagecontrol komponente.

Upravo kako sam napisao.

> Ono sto nisam shvatio je kako da neku numericku vrednost dodelim nekoj treeview.node pa potom

Možeš koristiti ono što si već uradio, vrednost je u Captionu noda: "PRVA (2,153)". Dakle to prevedi u broj, recimo uzmeš sadržaj između zagrada i konvertuješ pomoću StrToFloat. Možeš koristiti Pos da pronađeš zagrade i Copy da uzmeš broj. Druga varijanta (verovatno će ti biti teža) je da napraviš record koji će čuvati podatke o tabsheetu i pridruženom broju. Nešto ovako:

TTabData = record
Tab: TTabSheet;
Node: TTreeNode; // Eventualno možeš ubaciti i node
Value: Double;
end;

Dalje, TreeNode.Data povezuješ ne sa TabSheet već sa ovim recordom.

> da sabiranjem vrednosti pridodatim na nekoliko treeview.node izvrsim njihovo sabiranje i dobijeni rezultat prikazem u glavnoj grani.

Kada vrednost dobijenu iz captiona pretvoriš u broj, pređeš na parenta tog noda (preko Parent svojstva TTreeNode) i taj caption pretvoriš u broj, sabereš sa prethodnim i pređeš na njegovog parenta itd. Možda ti izgleda komplikovano ali nije (za sada nemoj raditi sa recordom, to ostavi kasnije za vežbu), kreni polako, napravi funkciju koja od prosleđenog noda vraća pridruženi broj, napravi drugu koja se kreće po stablu drveta i sabira redom vrednosti i na kraju totalni zbir dodeli krajnjem članu.


 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: problem sa stringgrid i treeview komponentama

[ Pregleda: 2159 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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