Keresés

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

  • Boolash
    aktív tag

    Huh, most mindenféle utánanézés előtt megkérdem: szoktad használni a Word makrórögzítőjét? Nagyon hasznos tud lenni: megcsinálja ezeknek a szövegszerkesztős műveleteknek a kódját.

    Igen megcsináltam, majd meg is néztem a kódot. Az okés, a find megvan.
    Csak nekem az kellene, hogyha talál egy @-ot, akkor ne csak az legyen kijelölve, hanem az egész szó. Valahogy a Range-t kellene kiterjeszteni.

  • ArchElf
    addikt

    Elmondom, hogy is van ez nálam.

    Van ugye a formon egy ListView vezérlő, ami eléggé el nem ítélhető módon a ListView1 nevet viseli.

    Az inicializáló részben a következők történnek:

    ListView1.ColumnHeaders.Add 1, , "Címke", 900
    ListView1.ColumnHeaders.Add 2, , "Leírás", 8000
    ListView1.ColumnHeaders.Add 3, , "Típus", 5000
    ListView1.ColumnHeaders.Add 4, , "Dátum", 1500

    Vagyis kap négy oszlopot. (Az első név félrevezető: a címke valójában a sorszámot jelenti.)

    Ezeket a következőképpen töltöm fel.

    'A listview vezérlő feltöltése
    If Tombmeret > 0 Then
    For i = 1 To Tombmeret
    If AdatBazis(i).hasznalt = True Then
    a$ = "A" & Str(i) 'Sajnos számot még füzér alakban sem fogad el a hülye listview vezérlő, ezért egy betű kell elé. De ez komoly, még str(i)-t sem enged magába tölteni.
    FoAblak.ListView1.ListItems.Add , a$, Str(i)
    FoAblak.ListView1.ListItems(a$).SubItems(1) = Trim(AdatBazis(i).leiras)
    FoAblak.ListView1.ListItems(a$).SubItems(2) = Tipus_szoveggel(AdatBazis(i).tipus)
    FoAblak.ListView1.ListItems(a$).SubItems(3) = AdatBazis(i).datum
    End If
    Next i
    End If

    A rendező rész a következő:

    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)

    Dim a As Integer

    a = ColumnHeader.Index - 1

    ListView1.SortKey = ColumnHeader.Index - 1

    If ListView1.SortKey = a Then
    If ListView1.SortOrder = lvwAscending Then
    ListView1.SortOrder = lvwDescending
    ElseIf ListView1.SortOrder = lvwDescending Then
    ListView1.SortOrder = lvwAscending
    End If
    End If

    ListView1.Sorted = True
    End Sub

    Ezzel vidáman rendez pl. dátum szerint is oda-vissza, de az első oszlop (ami a sorszám lenne) a szokásos hibát produkálja: a 10 nem a 9 után jön, hanem az 1 után (ABC szerinti rendezés).

    Mit lehet tenni?

    Kis angoltudás kék hozzá: link

    AE

    Comment 1: 5 perc google volt
    Comment 2: VB.NET-ben kb ugyanennyi idő megcsinálni is (lásd IComparer intefész)

  • Jester01
    veterán

    Köszi a választ!
    Hogyan gondoltad az oszlop típusát számmá alakítani?

    A súgó azt mondja, a SortKey tulajdonságra, hogy:

    Setting:
    0 Sort using the ListItem object's Text property.
    > 1 Sort using the subitem whose collection Index is specified here.

    Nálam a rekordszámnál 0-ra jön ki a setting, mivel az van az első oszlopban, tehát szöveg alapján fog rendezni. A többi esetre nem mondja ki, de nem lehet, hogy ott is a text tulajdonság alapján rendez?

    Akkor mit tehetek? Nekem kell megírni a rendező algoritmust, az majd törli a vezérlő teljes tartalmát, majd feltölti "kézzel" az elemeket?

    Nem lehet, hogy 1-el kezdődik az indexelés? Vagyis a SortKey=1 beállítást próbáltad?

  • Jester01
    veterán

    Egy rövid kérdés: ha a ListView vezérlőben az első oszlop egy adatbázis rekordjainak a sorszámát tartalmazza, és én e szerint szeretném rendeztetni az elemeket, hogyan tudom elérni, hogy az 1 után a 2 következzen, ne a 11, 12... stb. ?

    Már régen basiceztem, de nézd meg nem lehet-e az oszlop típusát számmá alakítani. Vagy ha nem nagyon ronda, akkor balról pótold ki nullákkal a számokat.

  • ArchElf
    addikt

    Köszi a tippeket!

    Egyébként most miben programozol? Fejlettebb VB-ben, vagy úgy általában abbahagytad a VB-t? Csak azért kérdeztem, mert én most ezen gondolkodom. Megpróbáltam egy projektet átvinni VB2005 alá, de nem sikerült. Annyival eltérnek az újabb verziók? Annyira, hogy gyakorlatilag újra kell tanulni a programozásukat? Megéri?

    Az utasítások eléggé különböznek, de azt szoktam mondani, hogy ha az ember nem "szemellenzősen" tanul programozni, az egyik nyelvről egy másikra való váltás csak napok/hetek kérdése. A váltásnál a legnagyobb nehézség a megszokások lerázása (alap változótípusok megtanulása, alap műveleti típusok formázása, programfelépítés), a többi csak arról szól, hogy nem a-nak hívják a függvényt, hanem b-nek, és nem három argumentuma van, hanem négy :)
    Amúgy ezekben aktívan programozok, azt azért nem merem mondani, hogy fejlesztek :)
    C#
    PHP
    VBS
    Ezekben meg nem aktívan, csak ha úgy hozza az igény:
    VB.NET
    ASP.NET
    Java
    VB6
    C/C++

    AE

  • Goose-T
    veterán

    Köszi a tippeket!

    Egyébként most miben programozol? Fejlettebb VB-ben, vagy úgy általában abbahagytad a VB-t? Csak azért kérdeztem, mert én most ezen gondolkodom. Megpróbáltam egy projektet átvinni VB2005 alá, de nem sikerült. Annyival eltérnek az újabb verziók? Annyira, hogy gyakorlatilag újra kell tanulni a programozásukat? Megéri?

    A VB6 után már a VB.NET jött, és nagyon eltér a régi verzióktól, tényleg újra kell tanulni. Mondjuk szerintem megéri, mert sokkal többet tud. Érdekes, hogy még VB6-ot használsz, az már egy tíz éves őskövület.

  • ArchElf
    addikt

    Nem valami App.Path ?

    De :) (vagy CurDir???)
    Amúgy ha jól rémlik ezt azt adja meg, ami:
    1)
    Ha magát az exe-t indítottad el, az a könyvtár, ahol az exe van
    2)
    Ha shortcut-ot indítottál, az a könyvtár, ami a shortcut "start in" mezőjében szerepel. Ha a start in könyvtár nem érvényes, akkor asszem a %windir% környezeti változó lesz az értéke (ami leggyakrabban c:\windows, de ez is telepítésfüggő)

    Úgy rémlik, hogy a VisualBasic IDE-t úgy lehet "átvágni", hogy ne a c:\program files\... legyen a start in könyvtár a projektnél, hanem a projektkönyvtár, hogy nem az IDE-ből indítod el a projektedet, hanem közvetlenül a projekt fájl megnyitásával. Elég régen használtam már VB6-ot nem vagyok benne biztos.

    AE

  • ArchElf
    addikt

    Az érdekelne, hogy hol van a kapcsolódási pont az installer és az installált program között.Vagyis honnan veszi át a program azokat az adatokat, hogy hova is telepítették, milyen beállításokkal?

    Épp azt írtam, hogy ez program és installer függő. Vagy célszerű tudnia programodnak, hogyan működik az installer (hova milyen adatokat ír), vagy pedig csak egyszerűen le kell kérdeznie a futó folyamat indítási könyvtárát.
    Amúgy az alkalmazásodba ne statikus, hanem relatív útvonalat használj. Tudom, hogy ez problémás a fejlesztéskor, mert alapból VB könyvtárában keresi a fájlokat, ha egy projektet indítasz, nem a projekt könyvtárában, de ezt is meg lehet kerülni.

    AE

  • ArchElf
    addikt

    Hát, igen, az első megoldás az lenne, hogy összecsomagolom, és használati utasításként mellé írom, hogy a c:\xyz könyvtárba KELL kitömöríteni, és csak oda, mert máshol nem működik. (Bár ez nem igazi megoldás.)

    Valami szabvány telepítőre gondoltam; gondoltam, azzal nem lesz sok gond. Tartalmaznak az ilyenek valami módszert a registry írásra vagy más effélére?

    A Visual Studionak van saját installere (persze nem az Express változatnak), de lehet válogatni a piacon is bőséggel (de ha van egy 1 órád, vagy fél napod, te is összedobhatsz egy alap telepítőt a programodhoz)... Anno használtam VB6-hoz is a beépített installer plugint (bár azért az kicsit már a szenvedés határát súrolta).

    AE

  • ArchElf
    addikt

    Tapasztal VB programozók, tudtok segíteni?

    Ha készítek egy programot, amit aztán föltelepít valaki, honnan fogja tudni az a program, hogy hova telepítették, milyen elérési úton keresse a konfigurációs fájlt, meg az adatfájlokat, amikkel majd dolgozni fog? Hogyan kell ezt beírni a kódba?

    Kérdés, hogy hogyan telepítették föl... Mondjuk a legegyszerűbb megoldás a registry (telepítéskor beíródik oda minden adat, ami neked kell), de lehet egy text file is a programod mellett. Mindenesetre ez nagyban függ attól, hogy te írod a telepítőt is, vagy valami szabvány telepítőbe teszed bele a programod.
    Amúgy az alkalmazás le tudja kérdezni a környezeti változóit. Pl mi a futtatott fájl elérési útvonala, mi van megadva "start in" könyvtárnak a linkjében, ha azzal indították, ésatöbbi...

    AE

  • Hát, igazából nem annyira VBA-specifikus a probléma. Most eszembe jutott valami, ha sikerül végiggondolnom, leírom az ötletet.

    hát segitenék, de sajna egy ideje linuxot használok ( megunta, a win, tüzfal, virusirto, sbt sz*rakodását ) és igy nem tudok probálkozni. Nem tudsz/tud valaki linux alá basic forditót?

  • sonar
    addikt

    Elmondom részletesebben.

    Word-ben szeretnék alkotni valamit, ami képes összerakni egy dokumentumot anélkül, hogy "előre ismerné" annak tartalmát. Ezt tartalmazná a szövegfájl. Tehát a VBA program csak bekérné a változókat, kiválasztaná a megfelelő txt fájlt, aztán ráengedné az értelmezőjét.

    Leegyszerűsítve valahogy így:

    HunyóNeve$, " a hunyó!"

    És akkor a program szépen a HunyóNeve változóból tenné be, hogy "Józsika" vagy "Pistike".

    Tehát az eredmény ilyesmi lenne:

    Pistike a hunyó!

    Igazából persze bonyolultabb a dolog. Papíron egy egyszerűbb HA... AKKOR... szerkezetet lefirkantottam már, de a változókra való hivatkozás jelenti a fő gondot.

    Arra gondoltam, hogy valamiféle előzetes "rögzítés" azért kellene: vagyis a változóneveket azért fixálni kellene, tehát ugyanazokat a változókat kellene használni a programnak, mint amelyek a leíró fájlban szerepelnek. Aztán a programba meg írni kéne valami kezelőt, mondjuk egy függvényt, ami visszaadja az adott változó értékét. Ehhez gondolom minden változót egyenként fel kellene vinni, "meg kell tanítani" neki. Sok változónál ez baromira nagy munkának tűnik. Főleg, hogy új típusokat is bevezetnék (Pascal-os rekord-szerűségekre gondolok), ez még bonyolítaná is.

    Esetleg van valami huszárvágás-szerű megoldás? (Hivatkozni a változóra egy füzérrel? Kis túlzással adatból kódot csinálni?)

    Hát VBA-ban nem vagyok otthon :(

  • sonar
    addikt

    Sziasztok! Lenne egy érdekes kérdésem:

    Elég különleges módon szeretnék hivatkozni egy változóra. Nem a felhasználó beavatkozásán múlna a dolog, hanem egy állományból olvasnám be a nevét. Szerintetek van erre valamilyen módszer vagy valamilyen értelezőt kell írni hozzá?

    Megoldható a dolog.
    Fájl megnyitással és értelmezéssel. Bár elég szűkszavúan fogalmaztál, és egy problémát többféle képpen is meg lehet oldani.

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