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

Potrebna pomoc, treeview, imagelist, database

[es] :: .NET :: Potrebna pomoc, treeview, imagelist, database

[ Pregleda: 2520 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

WhiteAngelBoy75
WhiteAngel Boy
Belgrade

Član broj: 61687
Poruke: 45
93.87.106.*



Profil

icon Potrebna pomoc, treeview, imagelist, database25.12.2009. u 01:31 - pre 175 meseci
Pregledao sam i ceo google i nigde ni jednog normalnog ili jednostavnog primera... !!!

Hocu da treeview kontrola umesto slike zemlje, kod drzava prikazuje zastavu za svaku zemlju posebno !!!

* napravio sam dva dataseta za dve tabele, upit drzava i kontinenata i tabela zastava
* uz linq programski jezik sam izvukao skracene oznake drzava, npr. SER = Srbija,
jel taku skracenicu imaju obadve tabele...
imena drzava
umanjene slike zastava 32*32

- ne koristim samo jedan view, upit iz baze zato sto vb .net express pravi komplikacije
kada se radi sa upitom u koji ima mnogo tabela... zato koristim samo jedan upit sa
najvise dve tabele u upitu, drzava i kontinenata


- umanjene zastavice sa 32*32 piksela *.bmp koristim na 16*16 jer treeview kontrola crta dodatne
lijnije na treeview kada koristite 32*32 pa izgleda grozno... !!!


* napravio sam jednu proceduru da mi ukloni duplikate iz niza kontinenata

* uz pomoc petlje sam ubacio sve kontinente i drzave,


* imagelist sam dodao (0) prvu sliku zemlje (globe)

- slicicu globe prikazuje u treeview za svaku granu, bez pisanja ikakvog koda, cim
spojite treeview i imagelist, bey obzira da li je slicica podesena na .index ili .kay treeview kontrole !!!

ostale sam slicice *bmp iz baze dodao petljom, mada hocu da stavim i skracenice drzava
kao tag ili index, sta vec imagelist koristi zajedno sa tim slicicama ??? i kako se to radi ???

1. Kako da ubacim slike sa nekim indeksom ili tagom ili cime bilo da mogu lakse pronaci sliku nego
brojevima u imagelist ???

2. Kako da ubacim slike sa imagelist-a u treeview ???


3. Gde mogu i kako da pojednostavim i uprostim kod ???


4. Kad selektujem neku drzavu da se pojavi njeno ime u msgbox ???

5. Ima li neko kod ili text kako se vrse sve operacije sa treeview ???
u 10 knjiga nisam nasao nista !!! svi ga pisci tu sfusere i zavrse... sa jednom ili dve slike... !!!

npr. kako mogu sam dodavati i uklanjati nodove kad pokrenem program zajedno sa slikama,
da se te izmene upisuju recimo u neku bazu, da program pamti sve izmene ???

* da li bi bilo lakse napraviti neki objecat sa picture i textbox pa taj objecat dodavati treeview kontroli... ???

i da ne postavljam jos milion pitanja, pls help !!!

Izvolite kod... !!!



Code:


 Public Class frmIzaberiteDrzavu

    Private Sub frmIzaberiteDrzavu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'SlikaZastavaMinDataSet.SlikeZastavaTabela' table. You can move, or remove it, as needed.
        Me.SlikeZastavaTabelaTableAdapter.Fill(Me.SlikaZastavaMinDataSet.SlikeZastavaTabela)
        'TODO: This line of code loads data into the 'QDrzavaDataSet.qDrzavaKontinent' table. You can move, or remove it, as needed.
        Me.QDrzavaKontinentTableAdapter.Fill(Me.QDrzavaDataSet.qDrzavaKontinent)

        'ubacivanje slika u treeview
        'izvlacimo slike zastava i oznaku u niz

        Dim SveZastave = From zastave In Me.SlikaZastavaMinDataSet.SlikeZastavaTabela _
                         Order By zastave.SkracenicaDrzave _
                         Select zastave.SkracenicaDrzave, zastave.SlikaZastavaMin

        Dim zass = From zastave In SveZastave _
                   Select Image.FromStream(New System.IO.MemoryStream(zastave.SlikaZastavaMin.ToArray()))

        Dim zs() As Image = zass.ToArray()
        zass = Nothing

        Dim skd = From skra In SveZastave _
                            Order By skra.SkracenicaDrzave _
                            Select skra.SkracenicaDrzave

        Dim sk() As String = skd.ToArray()
        skd = Nothing

        For i As Integer = 0 To sk.GetUpperBound(0)
            Me.imlZastave.Images.Add(sk(i), zs(i))

        Next

        'ubacuje tekst i pravi strukturu u treeview
        Dim SveDrzave = From drzave In Me.QDrzavaDataSet.qDrzavaKontinent _
                        Order By drzave.OznakaDrzave _
                        Select drzave.OznakaDrzave, drzave.Drzava, drzave.NazivDrzave, drzave.Expr1

        'pravi niz string tipa oz i pridodaje mu oznake drzave
        Dim ozna = From oznaka In SveDrzave _
                           Select oznaka.Drzava
        Dim oz() As String = ozna.ToArray
        ozna = Nothing

        'pravi niz string tipa kon i pridodaje mu kontinente
        Dim konn = From kontinent In SveDrzave _
                  Select kontinent.Expr1
        Dim kon() As String = konn.ToArray
        konn = Nothing

        'poziva proceduru za uklanjanje duplikata i otklanja duplikate iz kontinenata
        kon = UkloniDuplikate(kon)

        'ubacuje prvi red ili kontinente u treeview
        Dim bb As String = ""

        'zapocinje update kontrole radi ne trepcanja i brzeg ubacivanja
        'podataka u kontrolu treeview
        Me.trwIzaberiDrz.BeginUpdate()

        'ova jedna petlja se koristi za posao od vise petlji
        For i As Integer = 0 To kon.GetUpperBound(0)
            Me.trwIzaberiDrz.Nodes.Add(kon(i))

            bb = kon(i)

            'izdvaja drugi red na osnovu uslova jednog kontinenta
            Dim od = From dd In SveDrzave _
                     Order By dd.OznakaDrzave _
                     Where dd.Expr1 = bb _
                     Select dd.Drzava

            'pridruzuje prvom redu odabrane drzave
            Dim drz() As String = od.ToArray
            For j As Integer = 0 To drz.GetUpperBound(0)
                Me.trwIzaberiDrz.Nodes(i).Nodes.Add(drz(j))


            Next
        Next

        'zavrsavamo sa update kontrole, pa onda sortiramo sadrzaj
        Me.trwIzaberiDrz.Sort()
        Me.trwIzaberiDrz.EndUpdate()
        Me.trwIzaberiDrz.Refresh()


    End Sub

    'funkcija uklanja duplikate iz string niza
    Public Function UkloniDuplikate(ByVal niz() As String) As Array

        Dim a As List(Of String) = New List(Of String)
        Dim ix As Integer = 0
        Do While (ix < niz.Length)
            If Not a.Contains(niz(ix)) Then
                a.Add(niz(ix))
            End If

            ix = (ix + 1)
        Loop
        niz = a.ToArray

        Return niz

    End Function
End Class



Prikačeni fajlovi
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 09:47 - pre 175 meseci
Priznajem da nisam pregledao sve sto si uradio detaljno, ali, zar ne mozes da cuvas u bazi index slicice i kada popunjavas TreeView stavis u ImageIndex (ili kako se vec zove) tu vrednost pa da ti iscita iz liste odgovarajucu zastavu (sa tim index-om)?
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-4.sezampro.rs.



+395 Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 10:34 - pre 175 meseci
Citat:

3. Gde mogu i kako da pojednostavim i uprostim kod ???

Pokusaj da nasledis klasu TreeNode i to u 2 verzije (za Kontinent i za Drzavu )
pa da joj prosledjujes u konstruktoru strukturu ili klasu koja sadrzi dodatne podatke za svaki nod.
Npr.
Code:
 
Public Class ContinentTreeNode Inherits TreeNode 
' konstruktor 
Public ContinentTreeNode (TreeNodeData data) 
End Class 

Public Class StateTreeNode Inherits TreeNode 
Public StateTreeNode (TreeNodeData data) 
End 
End Class


Klasa TreeNodeData se puni iz baze odgovarajucim podacima tj .
napravis niz ovih objekata samo za kontinente

Code:
  
Public Class TreeNodeData 

Public m_strNodeName As String 
Public m_nImageIndex As Int32 
..
..
.. itd  

' i na kraju dodas ID kontinenta ako je u pitanju ContinentTreeNode 
' koji ce recimo za StateTreeNode biti -1 jer nema child nodove 
' ali ti ostaje za kasnija prosirenja hijerarhije stabla 

Public m_nID As Int32  

End Class 


Kad pravis ContinentTreeNode objekat :

Code:


Public Sub ContinentTreeNode (TreeNodeData data) 
' kreiras nod i popunis text noda , setujes njegovu slicicu itd .. 

' zatim uzmes ID kontinenta i uradis select nad bazom sa tim iD 
' i napravis novi niz TreeNodeData  
Dim arrayData () As New TreeNodeData  

' prolazis kroz niz TreeNodeData i kreiras StateTreeNode -ove 

Dim stateNode as New StateTreeNode (arrayData(i))
' i dodas ga kao child node tekucem Kontinentu 
End Sub


Na ovakvim nasledjenim klasama implementiaj metode delete koja ce raditi brisanje iz baze i iz treeview-a.








Viva lollapalooza
 
Odgovor na temu

WhiteAngelBoy75
WhiteAngel Boy
Belgrade

Član broj: 61687
Poruke: 45
77.46.247.*



Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 14:45 - pre 175 meseci
Shadowed, citas mi misli, to i ja hocu ali kako se to radi! Svaka zastava ima svoju skracenicu drzave u bazi, BIH, SER, HR... itd. Ali kako se indexuje zastavica
u image list. Kako se stavlja slicica sa indexom u listimage i kako se poziva iz imagelist sa indexom i stavlja u treeview. Imas li neki kod nekog primera ???




 
Odgovor na temu

WhiteAngelBoy75
WhiteAngel Boy
Belgrade

Član broj: 61687
Poruke: 45
77.46.247.*



Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 15:18 - pre 175 meseci
deerbeer, otisao si sa logikom predaleko, mislim moj kod odlicno i jednostavno puni treeview i kontinente i drzave tekstualno. E sad kada kazes ImageIndex... kako se stavljaju slike sa imageindexom u imagelist, a kako se pozivaju iz imageindex iz imagelist u treeview, vidim da si upucen u to, imas li samo neki kod primer kako se to radi. Vidim da imas veliku sliku projekta da i tako razmisljas. Brisanje je lako. Ova forma sluzi samo da klijent izabere drzavu, kad god neka druga forma ima potrebu za upisom drzave. Kad neko odabere drzavu odabrao je dve promenjive Kontinent i Drzavu i dodelio ih javnim promenjivima, pritiskom na button1 OK. Brisanje je jednostavno jer unos i brisanje radi druga forma koja se bavi upisom drzava u bazu. Kad izbrises iz baze drzavu ona se automatski brise i iz treeview, jer se izbrisana drzava ili cak kontinent ne pune u treeview ako ne postoje u bazi. To namerno tako programiram da uvek mozes promeniti, obrisati ili dodati novu drzavu i citav kontinent i zastave. Inace lako bi ja to rucno, a onda bi trebalo menjati celi program, kad se pojavi nova drzava ili drugacija zastava.

Kako se dodaje slika sa indexom, u image list i kako se dodaju slike u treeview sa indexom? Da se slika zastavice poziva na BIH, SER, HR... itd. Kontinenti nemaju zastavu, njima zelim da dodelim istu slicicu globe, koju vidis vec postavljenu. Pokusao sam da je ogranicim da se pojavljuje samo u kontinentima ali ne ide. treeview automatski dodeli celoj strukturi globe kao na slici.

Imas li neki kod, da ga uvrstim u vec postojecu petlju u programu, ili da pravim novu koja ce proveravati koja je drzava u pitanju, pa joj onda dodeliti image pozivom na SER, BIH, HR... itd ???




 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 15:21 - pre 175 meseci
Citat:
WhiteAngelBoy75: Shadowed, citas mi misli, to i ja hocu ali kako se to radi! Svaka zastava ima svoju skracenicu drzave u bazi, BIH, SER, HR... itd. Ali kako se indexuje zastavica
u image list. Kako se stavlja slicica sa indexom u listimage i kako se poziva iz imagelist sa indexom i stavlja u treeview. Imas li neki kod nekog primera ???

Hm, bolje da si cuvao brojeve umesto skracenica. U ImageList su indeksirane po brojevima, ne znam da li moze drugacije (ne volim da koristim imagelist i odavno nisam).
Mozda ti je najbolje da napravis enumeraciju gde imas da je bih=1, ser=2... i onda da je nadjes po imenu, cast-ujes u int i dodelis u ImageIndex.
Nemam primer..
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-4.sezampro.rs.



+395 Profil

icon Re: Potrebna pomoc, treeview, imagelist, database25.12.2009. u 15:59 - pre 175 meseci
@WhiteAngelBoy75
Nemoj pogresno da me shvatis , ali primer koji sam ti dao je cisto za razmiljsljanje
a ne za upotrebu :)

U kolekciji Images imas overload metodu Add sa kojom ubacujes "key" zajedno sa slikom :

Code:

Dim ImageList1 As New ImageList() 
ImageList1.Images.Add("SER", Image.FromFile("c:\srbija.bmp"))


Index slike mozes dobiti sa metodom IndexOfKey i setujes Image index od treenoda
Code:

treeNode.ImageIndex = ImageList1.Images.IndexOfKey("SER")


Mislim da bi to bilo dovoljno, nije testirano pisem ovo iz glave vise napamet ..



Viva lollapalooza
 
Odgovor na temu

WhiteAngelBoy75
WhiteAngel Boy
Belgrade

Član broj: 61687
Poruke: 45
93.87.149.*



Profil

icon Re: Potrebna pomoc, treeview, imagelist, database27.12.2009. u 21:41 - pre 175 meseci
Hvala deerbeer, dobro razmisljas, negde smo izgubljeno blizu... !!!

Shadowed, ja sam vec u kodu napisao...

Code:


        Dim skd = From skra In SveZastave _
                            Order By skra.SkracenicaDrzave _
                            Select skra.SkracenicaDrzave

        Dim sk() As String = skd.ToArray()
        skd = Nothing

        For i As Integer = 0 To zs.GetUpperBound(0)
            Me.imlZastave.Images.Add(sk(i), zs(i))

        Next

 


Po ovome se vidi da imagelist prihvata u sebe skracenice SER, BIH, itd... u string formatu. U pravu si da ni ja
nigde ne vidim u imagelist opciju za citanje istih, jos bolje kako ??? sto god sam pokusao javlja gresku! ali ih
negde kod sebe prihvata!

Nevidim nigde opciju kako zaobici imagelist iz treeview i dodavati slike.

Tako i ovo cudo ima neku sitnicu, samo je treba pronaci.

Code:


    'ova jedna petlja se koristi za posao od vise petlji
        For i As Integer = 0 To kon.GetUpperBound(0)
            Me.trwIzaberiDrz.Nodes.Add(kon(i))

            bb = kon(i)

            'izdvaja drugi red na osnovu uslova jednog kontinenta
            Dim od = From dd In SveDrzave _
                     Order By dd.OznakaDrzave _
                     Where dd.Expr1 = bb _
                     Select dd.Drzava

            'pridruzuje prvom redu odabrane drzave
            Dim drz() As String = od.ToArray
            Dim z As Integer = 1
            For j As Integer = 0 To drz.GetUpperBound(0)
                
    >>>>>>>>>>>>>  Me.trwIzaberiDrz.Nodes(i).Nodes.Add(Nothing, drz(j), sk(j), sk(j))

            Next
        Next

  


dvaput sam mu stavio array sa skracenicama zastava, jednu za iscrtavanje a drugu kada selektujete drzavu da ne prikazuje
globe slicicu gde treba da bude zastava.

Medjutim sad imamo dve situacuje !!!

1. Kako da prikazuje odgovarajucu zastavu odgovarajuce drzave, cak ih mesa i za kontinente ???

2. Kako da imagelist ne strach -u je slicice, tj. razvlaci u celi pravougaonik, nego da ih centrira, da ih ne prikazuje slepljene jednu za drugom ???




Prikačeni fajlovi
 
Odgovor na temu

[es] :: .NET :: Potrebna pomoc, treeview, imagelist, database

[ Pregleda: 2520 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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