[ Aleksandar Milic @ 19.09.2010. 16:22 ] @
Zdravo svima. Treba mi pomoc :

Napravio sam prostu aplikaciju za unos artikala i kupaca i gde se na kraju generise racun/predracun na trecoj formi.
Najpre se izabrani artikli dodaju u listview kontrolu u formi PRIPREMA. Kada se zavrsi unos, dugme poziva novu formu koja simulira prazan papir i puni ga podacima (br.dokumenta, datum, datum prometa i ostalo) ali sada tu nastaje problem, kako napuniti papir stavkama iz Listviewa? Jedini nacin (usled mog neznanja) je da napravim brdo praznih nevidljivih Label elemenata pa da ih rucno punim i prikazujem u zavisnosti od ukupnog broja elemenata listivewa, stim da sam se limitirao na deset stavki... ipak je ovo previse primitivno ali ne uspevam da nadjem bolje resenje (opet kazem, zbog nedovljnog znanja)

probao sam da napravim user control koji ce imati desetak label elemenata (rb, cena, jed.mere, porez....) pa da svaka stavka iz pomenutog listviewa pokrece novu kopiju tog usercontrola i puni ga podacima - nisam uspeo. ne umem cak ni da pristupim odredjenom elementu u User Controli.

dajte neki predlog, savet

Hvala unapred!



[ unisoft @ 19.09.2010. 19:50 ] @
Postavi to sto si do sada uradio uz post da pogledamo. Ja ti mogu pomoci ali ovako nista ne mogu da uradim, dao si malo informacija. Postavi zadatak i kada ga pogledam resicemo tvoj problem.
[ Aleksandar Milic @ 19.09.2010. 21:59 ] @
Aj probacu da ti objasnim uz ovo malo koda :

nadjemo zeljeni artikal u combo2 i popunimo textboxove (kolicina, rabat), ostali se automatski popune nakon obracunavanja u jednoj funkciji (cena osnovica, rabat iznos, pdv iznos itd...)
Zatim ovaj kod ispod prenese sve te vrednosti u ListView kontrolu zvanu STAMPA.

Code:

    stampa.ListItems.Add(stampa.ListItems.Count + 1).Text = Text8.Text                                                 'sifra
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(1) = Combo2.Text                                        'naziv
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(2) = "Kom"                                                  'JM
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(3) = CCur(Text6.Text)                                  'Kolicina
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(4) = Format(CCur(Text9.Text), "0.00")             'Cena/JM
        
        If Text4.Text = "" Or Text4.Text = " " Then
             stampa.ListItems.Item(stampa.ListItems.Count).SubItems(5) = "0.00"
        Else
             stampa.ListItems.Item(stampa.ListItems.Count).SubItems(5) = Format(CCur(Text4.Text), "0.00")
        End If

    (ovo iznad je limitiranje greske jer se sve preracunava na KeyDown eventu)
        
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(6) = Format(CCur(Text10.Text), "0.00")          'RabatIznos
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(7) = Format(CCur(Text2.Text), "0.00")            'PDV Osnovica
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(8) = "18"                                                   'Stopa PDV
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(9) = Format(CCur(Text5.Text), "0.00")            'Iznos PDV
    stampa.ListItems.Item(stampa.ListItems.Count).SubItems(10) = Format(CCur(Text7.Text), "0.00")          'Ukupno          



Zato sam napomenuo da trebam da napravim brdo label-ova i da se u zavisnosti od STAMPA.listitems.count te stavke iz Listviewa pojave na sledecoj formi zvanoj PAPIR :

Code:

sifra1.Caption = priprema.stampa.ListItems.Item(1).Text
Naziv1.Caption = priprema.stampa.ListItems.Item(1).SubItems(1)
jm1.Caption = priprema.stampa.ListItems.Item(1).SubItems(2)
kol1.Caption = priprema.stampa.ListItems.Item(1).SubItems(3)
cena1.Caption = priprema.stampa.ListItems.Item(1).SubItems(4)
rabat1.Caption = priprema.stampa.ListItems.Item(1).SubItems(5)
rabiznos1.Caption = priprema.stampa.ListItems.Item(1).SubItems(6)
osnovica1.Caption = priprema.stampa.ListItems.Item(1).SubItems(7)
stopa1.Caption = priprema.stampa.ListItems.Item(1).SubItems(8)
iznos1.Caption = priprema.stampa.ListItems.Item(1).SubItems(9)
ukupno1.Caption = priprema.stampa.ListItems.Item(1).SubItems(10)


tako da bi za sledeci red na 'papiru' trebalo da bude : sifra2, naziv2, jm2....

Code:

sifra2.Caption = priprema.stampa.ListItems.Item(2).Text
Naziv2.Caption = priprema.stampa.ListItems.Item(2).SubItems(1)
jm2.Caption = priprema.stampa.ListItems.Item(2).SubItems(2)
kol2.Caption = priprema.stampa.ListItems.Item(2).SubItems(3)
cena2.Caption = priprema.stampa.ListItems.Item(2).SubItems(4)
rabat2.Caption = priprema.stampa.ListItems.Item(2).SubItems(5)
rabiznos2.Caption = priprema.stampa.ListItems.Item(2).SubItems(6)
osnovica2.Caption = priprema.stampa.ListItems.Item(2).SubItems(7)
stopa2.Caption = priprema.stampa.ListItems.Item(2).SubItems(8)
iznos2.Caption = priprema.stampa.ListItems.Item(2).SubItems(9)
ukupno2.Caption = priprema.stampa.ListItems.Item(2).SubItems(10)


utopija, znam :)
sigurno postoji neki elegantniji nacin da se ovo odradi... nego, ko zna zna.. ko ne zna mora da pita :D
[ vuchko.vuchko @ 19.09.2010. 22:39 ] @
Ako sam te dobro svatio, ovo ti se sve desava u runtime-u, sto znaci da kada zatvoris ovaj svoj program to ti nigdje ne ostaje zapisano sem eventualno na nekom odstampanom papiru! Misljenja sam da je to skroz pogresno , naime treabao bi to sto upisujes sacuvas u neku bazu podataka, vjerujem da ces svatiti sta ti pricam cim budes radio neki ozbiljniji projekat !

To sa labelama zaboravi, dok ti formatiras svaku od labela po duzini sirini i visini, te top i left argumentu mozes vrlo lako da osjedis!

Uradi sledece:

1. Unesene podatke spasi u bazu podataka
2. Napravis upit nad bazom
3. Rezultat upita smjestis u data grid (ili neku slicnu kontrolu)
[ Aleksandar Milic @ 20.09.2010. 00:38 ] @
Ne cuva se,ali na kraju se odstampa preko .PrintForm funkcije kroz pdf printer a posle pdf na papir. Cuva se baza artikala i kupaca i to u obicnim fajlovima,
za sada mi ne treba neka mdb baza, ovo mi sasvim zavrsava posao, a i nezavistan sam od accessa.
razmisljao sam o sledecem : da petlja generise sve label-e i da im dodeli index koji bi bio povezan sa indexom linije iz listviewa. svima se definise duzina, sirina, left i top,


lblsifra(1) lblNazivArtikla(1) lblJedinicaMere(1) lblKolicina(1) itd........
lblsifra(2) lblNazivArtikla(2) lblJedinicaMere(2) lblKolicina(2) itd.........
.....

podatke bih dalje preuzimao iz subitema listviewa.

a zatim If uslov : ako ih ima vise od npr 20, ispuni se 'ceo A4' i kreira se ista takva forma i nastavi dalje da se puni.
na kraju 3-4 dodatna labela za suma sumarum i to je to. i sve je to super ali mi ne polazi za rukom. tacnije ne uspevam da napravim label(index)
[ Aleksandar Milic @ 20.09.2010. 02:05 ] @
Resio deo problema!!!! :)


For i = 1 To priprema.stampa.ListItems.Count

Load rb(rb.ubound + 1)
rb(rb.ubound).Top = rb(1).Top + i * (rb(1).Height + 50)
rb(rb.ubound).Left = 120
rb(rb.ubound).Caption = i
rb(rb.ubound).Visible = True

Load sifra(sifra.ubound + 1)
sifra(sifra.ubound).Top = sifra(1).Top + i * (sifra(1).Height + 50)
sifra(sifra.ubound).Left = 600
sifra(sifra.ubound).Caption = priprema.stampa.ListItems(i).Text
sifra(sifra.ubound).Visible = True

Load Naziv(Naziv.ubound + 1)
Naziv(Naziv.ubound).Top = Naziv(1).Top + i * (Naziv(1).Height + 50)
Naziv(Naziv.ubound).Left = 1440
Naziv(Naziv.ubound).Caption = priprema.stampa.ListItems(i).SubItems(1)
Naziv(Naziv.ubound).Visible = True

......

next i
[ vuchko.vuchko @ 20.09.2010. 23:07 ] @
Ma moze se to rjesiti na dosta nacina, al nije mi jasno zasto bjezati od "neizbjezne" baze podataka" kada ti ona olaksava posao za 200%, evo jedna primjer:

..popunis ti tu svoju jednu formu i odstampas je u vise primjeraka (recimo da imas 2 strane po 20-ak unosa znaci 40 unosa) i jedna primjerak ostavis za cuvanje kod sebe a drugi dadnes nekom kupcu npr. ! Poslije 5 minuta vraca ti se kupac ili ko vec i kaze da si neispravno unio njegovo ime i prezime i da on takav dokument nece da prihvati, i sad ti kazes ok, pa otvoris svoju formu ponovo pa ponovo onih 40-ak zapisa rucno unosis :-) , bi li to imalo smisla???

Sa bazom je skroz druga prica... nasmesis se, kazes oprostite, ukucas br. fakture , prepravis ime i sve si rjesio!
[ Aleksandar Milic @ 21.09.2010. 08:57 ] @
Vucko, razumem te apsolutno da je baza - baza. Ali moje pitanje se odnosilo na nesto drugo.
Meni je bio problem automatizacije ispisa obicnih stringova, bilo da su iz baze ili kao u ovom slucaju, listviewa. sa druge strane, i ovde cu kroz dva dodatna reda u kodu smestati izradjenu ponudu/profakturu u txt fajl, i po zelji ga ucitavati u listview.