Hirdetés

Új hozzászólás Aktív témák

  • martonx
    veterán

    Sziasztok!
    Még csak a szárnyaimat bontogatom programozás terén, és nem is ez a szakterületem, de a munkám során néha jól jönne némi programozástechnikai ismeret, ezért vágtam bele a fejszémet a VB-be. Egy olyan dolgot szertnék kérdezni tőletek amire nem konkrét forráskódot várnék megoldásként, inkább az elméleti háttere érdekelne a dolognak.

    Adott egy collection amiben kétféle adattípusú adatot tárolnék. Az egyik féle osztályból (kereszteljük őket mondjuk "A-típus"-ra) létrehozott objektum tartalmaz vagy 5-6 féle mezőt + pár eljárást és függvényt a kezelésükre. A másik osztály (fantáziadúsan, legyen mondjuk "B-típus") az A típusból van örköltetve viszont még plussz 5 adatot tartalmaznának az ebből képzett objektumok. A kétféle objektum egy kollekcióba gyűjthető, és a "TypeOf(object) Is A-típus" kifejezéssel megállapítható az adott elem mezőinek mivolta is. Ahhoz, hogy a feltöltött listát megjeleníthessem használnék egy Listview1 objektumot.
    A lista elemeit fel tudom tölteni ehhez hasonló módon:
    ...
    For each elem as object in kollekció
    if typeof(elem) is Atípus then listview1.items.add(elem.mező_a)
    ...(elem.mező_b)
    ...
    else
    listview1...items.add(elem.méret1)
    next

    A kérdésem az lenne, hogy az ily módon feltöltött listview-ból hogyan tudom visszanyerni az eredeti objektum "helyét" a kollekcióban? Lehet hogy alapból rosszul gondolkodom és nem is így kéne hozzálátni a feladathoz. Már többféleképpen is próbáltam, de mindig zátonyra futok valahol. A gond akkor jelentkezik amikor kijelölök egy listaelemet és ki akarom törölni a kollekcióból. Arra gondoltam, hogy a törlési eljárásban deklarálok egy objektumot, aminek manuálisan visszatöltöm az adatmezőit és ezt az objektumot használom a beazonosításra.

    így valahogy:

    sub gomb1.click(...)handles gomb1.click
    obj.mező1 = listview1.selecteditems(0).items.tostring
    obj.mező2 = istview1.selecteditems(0).subitems(0).items.tostring
    ...(és így végig az összes mezőn)
    ...
    törlés(obj)
    end sub

    sub törlés(mit as object)
    kollekció.remove(mit)
    end sub

    Nagy balgaságot követek el így? Van ennél egyszerűbb mód, azon kívül hogy adatbázist használnék? (Még addig nem juttotam el a könyvben :$ :). Még egy dolog mielőtt valaki az index-ek használatán gondolkodna: A listview-ban emelkedő sorrendben szeretném megjeleníttetni az elemeket, ami azt eredményezi hogy pl a 100-adiknak beírt adat legelőre kerül 0-s index-el(!), viszont a kollekcióban pedig időrendi sorrend szerint vannak tárolva. Viszont ami egyszerűsíti a helyzetet az az, hogy egy objektum sem ismétlődhet a sorban.

    Előre is köszönöm ha valaki válaszra méltatna és megérti a kérdésemet! :)

    Itt ma senki nem tud értelmesen beszélni? Az előbb egy emberke betett ide egy rakás kódot, de nem kért semmit, aztán meg írta, hogy tárgytalan, sosem fogjuk megtudni mit szeretett volna. :DDD
    Most jössz te, beömlesztesz ide egy rakás információt, csak éppen az nem derül ki, hogy mit is akarsz.
    Tanuljunk már meg kérdezni, és válasszuk már el a lényeget a lényegtelentől. Első körben csak erre válaszolj 1-2 mondatban:
    MI A FELADAT? Mit akarsz csinálni?
    Nem érdekel a listview-d, nem érdekelnek a collection-ök rokoni kapcsolatai. Azt mondd meg, hogy mi az alap felállás, mit szeretnél megoldani a programoddal?

Új hozzászólás Aktív témák