Články

Tisk článku Tisk článku

Přidáváme druhý formulář

[Zpět na kategorii]

Datum: 18. 5. 2007 19:35       Autor: Tomáš Herceg       Zobrazeno: 23610x

Kategorie: Začínáme

Témata: VB.NET

Seriál: VB.NET od začátku - Díl 9.

V tomto díle dokončíme naši aplikaci pro správu domácího účetnictví a vysvětlíme si, co to jsou třídy a jak vlastně fungují. Kromě toho se naučíme With blok a práci s více formuláři.


Většina aplikací má více formulářů. V jazyce Visual Basic 6 a ve starších verzích se s formuláři pracovalo trochu jinak, Visual Basic .NET používá trochu jiné metody (které jsou podle mě logičtější a použitelnější, je to ale spíše věc zvyku). Právě kvůli tomu na Visual Basic .NET mnoho programátorů ze starších verzí nadává, ale my se tím nenecháme odradit a vysvětlíme si, jak se s formuláři pracuje ve Visual Basic .NET a proč je to právě takto.

Třídy

Staré programovací jazyky používaly takzvané strukturované programování, což je prakticky to, co jsme se naučili až dosud, ovšem bez objektů. Ještě tam patří funkce a procedury, které se naučíme v díle příštím. Později se však ukázalo, že by se hodilo používat objekty, čemuž se říká objektově orientované programování. Tento styl programování používají prakticky všechny běžně používané jazyky. Abychom pochopili, jak objekty fungují, musíme si vysvětlit, co jsou to třídy. A začneme pěkně na příkladu.

.NET Framework obsahuje třídu Button (tlačítko), což je obecná komponenta, kterou můžeme "plácnout" na formulář. Tato třída není nic jiného, než několik vlastností, funkcí, procedur a událostí, ke kterým můžeme přistupovat zvenku, tato třída ale obsahuje také proměnné, které jsou pouze vnitřní a není žádoucí, aby k nim mohl přistupovat někdo jiný, než právě toto tlačítko.

Vlastnosti již známe. Upravují a mění vlastnosti komponenty, většinou slouží k nastavení hodnot vnitřních proměnných, ale nemusí to platit vždy. Události jsou takové "záchytné body", na které můžeme "pověsit" nějakou proceduru, která se spustí, jakmile dojde k té události. Například pokud klikneme na tlačítko, událost Click zavolá proceduru Button1_Click, pokud vytvoříme na formuláři tlačítko a dvojklikem vytvoříme proceduru této události. Funkce je úsek kódu, který může dostat nějaké vstupní parametry. Pokud funkci zavoláme a předáme jí potřebné parametry, tento úsek kódu se provede (většinou něco spočítá) a vrátí výsledek. Procedura je vlastně funkce, která výsledek nevrací (jenom něco udělá).

A naše třída Button je právě soubor těchto vlastností, událostí, funkcí, procedur a vnitřních proměnných, který je někde popsán a který nám umožňuje vytvořit libovolné množství objektů. Tyto objekty, které jsou od této třídy (je to vlastně takov šablona) odvozené, mají stejné vlastnosti, události atd. jako tato třída a tyto vlastnosti, události atd. mění pouze ten konkrétní exemplář (instanci) daného objektu nezávisle na objektech ostatních. Třída jako taková nikde fyzicky neexistuje, je to pouze jakási šablona, podle které se vytváří objekty.

Pokud tedy na formulář přidáme 5 tlačítek, každé z nich je objekt odvozený od třídy Button, všechny mají stejné vlastnosti, události atd. Ale pokud klikneme na jedno tlačítko, spustí se pouze jeho události Click, ostatním ne. Pokud jednomu zmníme text, ostatním text zůstane. Zkrátka všechna tlačítka vypadají stejně a dělají to samé, ale jsou na sobě nezávislá.

Samozřejmě třídy se používají téměř všude, ne pouze pro nějaké vizuální objekty. Již jsme používali StreamReader a StreamWriter, což jsou třídy, jejichž objekty slouží k práci se soubory. Nijak nevypadají a nikde se nezobrazují. Jen základní princip je stejný.

A jak to souvisí s druhým formulářem?

Každé tlačítko je objekt nějaké třídy. A objekt může obsahovat i další objekty. Formulář je totiž také objekt, který má mimo jiné vlastnost Controls, což je kolekce (něco jako pole, podrobněji se o kolekcích budeme bavit později) komponent, které na něm jsou.

Když navrhujeme ve Visual Studiu formulář, nevytváříme ale objekt. Vytváříme definici třídy. Pokud ale máme standardní nastavení projektu, někde v pozadí se nám vytvoří objekt třídy Form1 a zobrazí se. Jakmile jej ukončíme, ukončí se celý program. To ale není jen tak samo od sebe, Visual Basic .NET na pozadí vygeneruje nějaký kód, který ovšem nevidíme. Pokud bychom ale chtěli, mohli bychom si vytvořit další objekt třídy Form1 a pokud bychom ho zobrazili, uvidíme dva identické formuláře Form1 i s komponentami, které jsme navrhli. Pokud ale jeden změníme, druhý se nezmění. Jak správně tušíte, můžeme si tedy vytvořit druhý formulář a v okamžiku, kdy jej chceme zobrazit, vytvoříme nový objekt třídy druhého formuláře. Takže je to poměrně jednoduché a logické, pokud se smíříme s třídami a objekty.

Otevřete si tedy projekt z minula a v průzkumníkovi projektu klikněte pravým tlačítkem na název tohoto projektu a vyberte Add / New Item. Ze seznamu objektů vyberte Dialog a potvrďte tlačítkem OK. Tím se nám do projektu přidá druhý formulář, který bude sloužit k přidávání a úpravě záznamů. Mohli bychom vybrat Windows Form, ale nám se více hodí Dialog, má již připravená tlačítka. Ale jinak je to normální formulář.

Přidejte na něj komponenty podle obrázku:

Návrh formuláře 2

Komponentě NumericUpDown nastavte vlastnost Minimum na -100000, Maximum na 100000 a DecimalPlaces na 2. Tato komponenta je určena pro čísla a kontroluje nám, jestli je číslo ze zadaného rozsahu. DateTimePicker slouží k pohodlnému výběru data.

To je celé, teď se nahoře v záložkách přepněte zpět na první formulář.

Přidávání nového záznamu

Dvakrát tedy klikněte na tlačítko Přidat a napíšeme kód pro zobrazení okna, získání hodnot, které uživatel zadal, a nakonec vložení do seznamu. Vytvoříme tedy nový objekt třídy Dialog1, což je naše dialogové okno, které jsme vytvořili. Každý formulář má funkci (někdy se jí také říká metoda) Show a ShowDialog. Pokud totiž objekt vytvoříme, neukáže se na obrazovce hned. Musíme právě zavolat jednu z těchto metod, abychom jej zobrazili. Každá se ovšem chová trochu jinak.

Show zobrazí formulář, se kterým můžeme pracovat nezávisle na formuláři prvním. Další příkazy za zavoláním této metody se provedou ihned. To se nám ale v tomto případě příliš nehodí.

ShowDialog zobrazí druhé okno a čeká, než jej zavřeme. První okno je zamknuté a nemůžeme s ním manipulovat, dokud druhé nezavřeme. Jakmile druhé okno zavřeme, provedou se teprve příkazy za zavoláním této metody v prvním okně. Provádění kódu v prvním okně se tedy pozastaví do doby, než dialog zavřeme. A právě to potřebujeme.

Okna navíc mohou i vracet výsledky. Nejčastěji se používá hodnota DialogResult.OK (pokud jsou změny v okně platné) a DialogResult.Cancel (pokud byly změny stornovány). Protože jsme přidali okno Dialog, o toto se již nemusíme starat. Pokud se podíváte na procedury událostí u tlačítek v tomto dialogu, Visual Basic už vygeneroval vracení hodnoty za nás a my se o něj nemusíme starat. Ale opět za tím stojí nějaký kód, není to jen tak samo sebou. Výhoda je, že tento kód nemusíme psát my.

Výsledek, který okno vrátilo, je zároveň návratová hodnota volání metody ShowDialog. Vytvoříme tedy podmínku - pokud je tato návratová hodnota rovna hodnotě DialogResult.OK, znamená to, že jsme kliknuli na tlačítko OK a že tedy chceme záznam opravdu přidat. Uvnitř této podmínky zjistíme hodnoty v jednotlivých komponentách a vytvoříme řádek v seznamu, jak jsme se to naučili v minulém díle.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dlg As New Dialog1()                                'vytvořit objekt nového okna
        If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

            'zjistit hodnoty z okna
            Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
            Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
            Dim text As String = dlg.TextBox1.Text              'zjistit popis

            Dim polozka As New ListViewItem()                   'vytvořit novou položku seznamu
            If castka < 0 Then polozka.ForeColor = Color.Red    'pokud je částka menší než nula, obarvit položku červeně
            polozka.Text = datum.ToShortDateString()   'vypsat datum
            polozka.SubItems.Add(castka)                        'přidat druhý sloupeček s částkou
            polozka.SubItems.Add(text)                          'přidat třetí sloupeček s popisem
            ListView1.Items.Add(polozka)                        'přidat položku do seznamu
        End If
    End Sub

Pokud jsou komponenty na formuláři, kde právě jsme, stačí pouze napsat název komponenty. Pokud jsou jinde, musíme před to dát i objekt toho formuláře (takže dlg, ne Dialog1). dlg je objekt, Dialog1 je třída. Pak už je vše stejné. Vytvoříme si novou položku seznamu, tedy ListViewItem a naplníme ji daty. Nakonec ji přidáme do kolekce položek Items v komponentě ListView. Jediná změna je použití metody ToShortDateString na proměnné datum. Komponenta DateTimePicker vrací i čas, který nás nezajímá. Proto datum převedeme touto metodou na krátký formát tak, jak je všude (5.5.2007, dlouhý by byl 5. května 2007). Při načítání ze souboru nemusíme, tam se ukládá pouze datum, čas už ne.

Úprava záznamu

Upravení záznamu bude velice podobné. Vytvoříme objekt formuláře a před tím, než jej zobrazíme, nastavíme do jeho komponent hodnoty z vybrané položky v komponentě ListView. Po zobrazení nebudeme novou položku vytvářet, ale nastavíme nové hodnoty té stávající.

ListView podporuje výběr více položek najednou. To se nám momentálně nehodí, takže nastavte v režimu návrhu hodnotu vlastnosti MultiSelect na hodnotu False. Položky, které jsou právě vybrané, jsou ve vlastnosti SelectedItem komponenty ListView. Může jich být totiž více, vlastnost SelectedItems je totiž kolekce. Může ale také nastat situace, kdy není vybraná žádná položka. To zjistíme jednoduše, protože hodnota SelectedItems.Count bude rovna nule. Count je totiž počet položek v kolekci. Pokud je nula, kolekce je prázdná a tedy žádné položky nejsou vybrány. Pokud je vybrána nějaká položka, najdeme ji v SelectedItems(0). Více položek vybrat nelze, protože jsme to zakázali. Celá procedura úpravy záznamu tedy bude vypadat takto:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic neupravovat

        Dim dlg As New Dialog1()                                'vytvořit objekt nového okna
        'nastavit do okna hodnoty ze seznamu
        dlg.DateTimePicker1.Value = CDate(ListView1.SelectedItems(0).SubItems(0).Text)      'nastavit datum
        dlg.NumericUpDown1.Value = CDbl(ListView1.SelectedItems(0).SubItems(1).Text)        'nastavit částku
        dlg.TextBox1.Text = ListView1.SelectedItems(0).SubItems(2).Text                     'nastavit popis

        If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

            'zjistit hodnoty z okna
            Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
            Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
            Dim text As String = dlg.TextBox1.Text              'zjistit popis

            'pokud je částka menší než nula, obarvit položku červeně, jinak ji obarvit černě
            If castka < 0 Then ListView1.SelectedItems(0).ForeColor = Color.Red Else ListView1.SelectedItems(0).ForeColor = Color.Black
            ListView1.SelectedItems(0).SubItems(0).Text = datum.ToShortDateString()            'vypsat datum
            ListView1.SelectedItems(0).SubItems(1).Text = castka                               'přidat druhý sloupeček s částkou
            ListView1.SelectedItems(0).SubItems(2).Text = text                                 'přidat třetí sloupeček s popisem
        End If
    End Sub

Toto tedy fungovat bude, ale upřímně řečeno, moc se vám to určitě nelíbí. Některé kousky ListView1.SelectedItems(0) se tam opakují příliš často. Tomu se ale dá vyhnout, pokud použijeme With blok. Je to snadné.

Část kódu, kde se daný kousek opakuje, ohraničíme zepředu řádkem With ListView1.SelectedItems(0) a na konci řádkem End With. A všechny výskyty ListView1.SelectedItems(0) můžeme z obsahu tohoto bloku klidně vymazat. Pokud totiž něco uvnitř bloku začíná tečkou, je to automaticky přidruženo k vlastnosti nebo objektu za slovem With. Takto nemůžeme rozdělit prakticky jakýkoliv objekt a vlastnost, ale pouze na místě tečky. Nikde jinde. Procedura úpravy tedy bude po zjednodušení vypadat takto:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic neupravovat

        With ListView1.SelectedItems(0)
            Dim dlg As New Dialog1()                                'vytvořit objekt nového okna

            'nastavit do okna hodnoty ze seznamu
            dlg.DateTimePicker1.Value = CDate(.SubItems(0).Text)      'nastavit datum
            dlg.NumericUpDown1.Value = CDbl(.SubItems(1).Text)        'nastavit částku
            dlg.TextBox1.Text = .SubItems(2).Text                     'nastavit popis

            If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

                'zjistit hodnoty z okna
                Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
                Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
                Dim text As String = dlg.TextBox1.Text              'zjistit popis

                'pokud je částka menší než nula, obarvit položku červeně, jinak ji obarvit černě
                If castka < 0 Then .ForeColor = Color.Red Else .ForeColor = Color.Black
                .SubItems(0).Text = datum.ToShortDateString()            'vypsat datum
                .SubItems(1).Text = castka                               'přidat druhý sloupeček s částkou
                .SubItems(2).Text = text                                 'přidat třetí sloupeček s popisem
            End If
        End With
    End Sub

Musíte uznat, že to je hned přehlednější. A navíc je to méně psaní. Pokud by bylo opakování na dvou místech, With blok se nevyplatí. Ale pokud je to prakticky na každém řádku, rozhodně doporučuji tento blok použít. Kódu je méně a lépe se v něm orientuje.

Odstranění záznamu

Poslední funkce, kterou musíme implementovat, je odstranění záznamu. To je však velmi jednoduché.

Celý tento a minulý díl slibuji, že vysvětlím, co jsou to kolekce. Tak tedy do toho. Kolekce má podobnou funkci jako pole. U pole je však obtížné měnit jeho velikost a ne vždy to je vůbec možné. Kolekce je "nafukovací" pole. Můžeme do ní metodou Add položky přidávat, vlastnost Count vrací počet položek a máme také metodu Remove, která položky odebírá. Kolekce se používají velice často (kolekce položek v seznamu, kolekce komponent na formuláři atd.).

Před odstraněním, stejně jako před úpravou, musíme zjistit, jestli uživatel má vybranou nějakou položku. Pokud by se tak stalo, nejen že bychom nevěděli, kterou položku máme odebrat, ale program by nám vyhodil chybu při práci s ListView1.SelectedItems(0), protože tato položka by neexistovala. Procedura tlačítka pro odstranění bude tedy vypadat takto:

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic nemazat

        ListView1.Items.Remove(ListView1.SelectedItems(0))
    End Sub

To je vše. Aplikace je hotová. V příštím díle si povíme o procedurách a funkcích a ukážeme si, jak si je vytvářet.

Hotová aplikace pro domácí účetnictví


> Na začátek

 

Hodnocení:

Hlasů: 48
Zvolte své hodnocení

Tomáš Herceg

Jsem hlavním softwarovým architektem ve společnosti Riganti. Mám dlouholeté zkušenosti s technologiemi ASP.NET, Silverlight, WPF a XNA. Působím též jako lektor ve společnosti Gopas a již třetím rokem jsem držitelem ocenění Microsoft Most Valuable Professional.

Podpořte vznik dalších článků

Související články

DílNázev článku 
Díl 1. Úvod, vývojové prostředí a základní pojmy 25. 4. 2007
Díl 2. Začínáme programovat 25. 4. 2007
Díl 3. Proměnné a datové typy 25. 4. 2007
Díl 4. Podmínky a operátory 26. 4. 2007
Díl 5. Složitější podmínky a rozhodovací struktury 26. 4. 2007
Díl 6. Cyklus For 5. 5. 2007
Díl 7. Pole 9. 5. 2007
Díl 8. Pole, cykly a práce se soubory 14. 5. 2007
Díl 9. Přidáváme druhý formulář 18. 5. 2007
Díl 10. Funkce a procedury 6. 7. 2007
Díl 11. Kolekce a pole 27. 7. 2007
Díl 12. Práce s textem a řetězci 17. 8. 2007
Díl 13. Úvod do grafiky 27. 8. 2007
Díl 14. Vykreslujeme graf 31. 8. 2007
Díl 15. Práce se soubory, úvod do objektově orientovaného programování 19. 11. 2007
Díl 16. Třídy a funkce .NET frameworku, o kterých je dobré vědět 31. 12. 2007
Díl 17. Objektově orientované programování - základy 30. 6. 2008
Díl 18. Dědičnost 6. 10. 2008

RSS Feed RSS Feed

Diskuse

pozn

Datum: 5.6.2007 8:37
Autor: neregistrovaný (84.244.73.162)
Hodnocení autora: není
Příspěvků: 0
Pulka udkazu na http://www.vbnet.cz
nefunguje !! chtelo by to s tim neco delat
 
           [Odpovědět]
 
Hodnocení: -15 Čekejte, prosím...

Re: pozn

Datum: 5.6.2007 10:29
Autor: Tomáš Herceg
Hodnocení autora: 1673
Příspěvků: 3536
Můžete to, prosím, specifikovat?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Re: pozn

Datum: 9.6.2007 2:14
Autor: neregistrovaný (213.180.53.50)
Hodnocení autora: není
Příspěvků: 0
Odkazy fungují, nenarazil jsem na žádný nefunkční, ale mnoho jich je bez obsahu. Bylo by dobré, aby nabídka obsahovala počet položek, na které odkazuje. Když tam bude nula, nikdo se nebude namáhat s otevíráním, aby se dověděl, že "Žádné články nejsou k dispozici."
 
           [Odpovědět]
 
Hodnocení: -7 Čekejte, prosím...

Velimi kvalitní, srozumitelná a užitečná práce

Datum: 5.6.2007 14:01
Autor: neregistrovaný (90.176.62.20)
Hodnocení autora: není
Příspěvků: 0
Jen tak dál.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Srozumitelná práce

Datum: 7.6.2007 14:43
Autor: neregistrovaný (84.42.236.75)
Hodnocení autora: není
Příspěvků: 0
Dobře napsaná práce i pro laiky.Jaká je nejvhodnější a v tomto stylu napsaná dostupná literatura ?
 
           [Odpovědět]
 
Hodnocení: -2 Čekejte, prosím...

Re: Srozumitelná práce

Datum: 7.6.2007 17:12
Autor: Tomáš Herceg
Hodnocení autora: 1673
Příspěvků: 3536
O jazyce Visual Basic .NET a zejména o novější verzi 2005 toho v češtině existuje pramálo. Podívejte se například na nakladatelství Computer Press (http://www.cpress.cz), tam něco určitě najdete.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Přidání dalšího dílu seriálu:

Datum: 5.7.2007 20:46
Autor: Dominik Madea
Hodnocení autora: -1
Příspěvků: 17
Na konci tohoto dílu jste napsal, že v příštím díle bude téma procedury a funkce a jejich vytváření.
Tak už byste mohl nějáký ten článek o tomhle napsat.
Děkuji.
 
           [Odpovědět]
 
Hodnocení: -10 Čekejte, prosím...

Úprava záznamu

Datum: 3.10.2007 12:26
Autor: Tereza Kalivodová
Hodnocení autora: 1
Příspěvků: 15
Dobrý den,
lze nějak udělat, aby po vybrání jednoho z řádků v listview byl zvýrazněn celý řádek a né jen záznam v prvním sloupečku?
Díky za odpověď
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Úprava záznamu

Datum: 4.10.2007 22:42
Autor: Tomáš Herceg
Hodnocení autora: 1673
Příspěvků: 3536
Ovšem, stačí nastavit hodnotu vlastnosti FullRowSelect na True.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Re: Úprava záznamu

Datum: 5.10.2007 22:53
Autor: Tereza Kalivodová
Hodnocení autora: 1
Příspěvků: 15
Moc děkuji,
vy jste skvělý, já jsem slepá.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

cint x cdbl

Datum: 18.1.2008 13:09
Autor: neregistrovaný (194.228.83.195)
Hodnocení autora: není
Příspěvků: 0
Proč je v úpravě záznamu CInt a ne CDbl (myslim u částky samozřejmě)?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: cint x cdbl

Datum: 18.1.2008 14:51
Autor: Tomáš Herceg
Hodnocení autora: 1673
Příspěvků: 3536
Chybička se vloudila. Opraveno.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Dotaz

Datum: 18.3.2008 20:33
Autor: neregistrovaný (88.100.109.83)
Hodnocení autora: není
Příspěvků: 0
Snažím se otevřít nový formulář funkcí show ale píše mi to chybu
Form that is already visible cannot be displayed as a modal dialog box. Set the form's visible property to false before calling Show. a nikde nemohu najít vlastnost visible.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Show(Dialog1)
        Me.Close()
    End Sub
 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Otevření 2. formuláře tak, aby stávající zmizel

Datum: 1.7.2008 16:49
Autor: neregistrovaný (62.77.107.109)
Hodnocení autora: není
Příspěvků: 0
Zdravim, potrboval bych po kliknutí na Button otevřít nový formulář, respektive změnit strukturu stávající tak, abych nahrál jiný připravený formulář do stávajícího okna... Ale nevím jak a prosím o radu, dekuji velice...
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Koljas

Datum: 9.10.2008 16:25
Autor: neregistrovaný (84.19.71.3)
Hodnocení autora: není
Příspěvků: 0
Dobrý den. Mohl bych poprosit o kompletní kod okna Form1?
Nějak se mi to nechce spustit, zvíraznuje jako problem radek s database.exe. koljas@email.cz
 
           [Odpovědět]
 
Hodnocení: -1 Čekejte, prosím...

označení řádku

Datum: 21.10.2008 21:06
Autor: neregistrovaný (195.39.26.142)
Hodnocení autora: není
Příspěvků: 0
Dobrý den, chtěl bych se optat zda jde programově označit řádek v komponentě ListView. Jde mi o to aby při hledání a souhlasu textů se rádek, ve kterém je text označil selecteditems nesl patřičnou hodnotu.

Děkuji za radu, nějak se řešení ne a ne dopídit.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: označení řádku

Datum: 13.11.2008 7:00
Autor: neregistrovaný (193.165.151.90)
Hodnocení autora: není
Příspěvků: 0
nastavit hodnotu vlastnosti FullRowSelect na True
 
           [Odpovědět]
 
Hodnocení: -1 Čekejte, prosím...

Vyhledávání v ListView

Datum: 12.11.2008 12:05
Autor: Pavel Hlávka
Hodnocení autora: 15
Příspěvků: 37
Jak můžu vyhledat něco v komponentě ListView ?
 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

ListView

Datum: 17.11.2008 10:18
Autor: Pavel Hlávka
Hodnocení autora: 15
Příspěvků: 37
Zdarec, snažím se vytvořit vyhledávání v komponentě ListView.
Přidal jsem jedno tlačítko a TextBox.
Napsal jsem tohle, ale je-li tam slovo stejné slovo víckrát, tak to najde pouze první. Také musíte nastavit hodnotu HideSelection na False. Najdete ji v okně Properties u ListView.

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim instance As ListView
        Dim text As String
        Dim includeSubItemsInSearch As Boolean
        Dim startIndex As Integer
        Dim returnValue As ListViewItem
        text = TextBox1.Text
        instance = ListView1
        startIndex = 0
        includeSubItemsInSearch = True
        returnValue = instance.FindItemWithText(text, includeSubItemsInSearch, startIndex)
        If returnValue Is Nothing Then
            MsgBox("Nenalezeno", MsgBoxStyle.Critical)
        Else
            returnValue.Selected() = True

        End If
 
Pokud víte jak na to, poraďte mi plííís nebo z toho neusnu :-)
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: ListView

Datum: 24.7.2010 17:52
Autor: neregistrovaný (90.179.99.235)
Hodnocení autora: není
Příspěvků: 0
možná: "hledej další ..."
...
startindex=ListView1.SelectedItems(0).Index+1
...
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Změna názvu 2. formuláře

Datum: 5.12.2008 10:39
Autor: neregistrovaný (194.228.36.34)
Hodnocení autora: není
Příspěvků: 0
Chtěl jsem si na druhý formulář do názvu zadat v případě, že přidávám záznam, tak "Přidání záznamu" a pokud Edituju, tak "Oprava záznamu". Místo "dialog1". Jen tak z pilnosti. Ale nějak se se mnou nechce bavit. Poradíte? Díky.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna názvu 2. formuláře

Datum: 5.12.2008 15:17
Autor: neregistrovaný (62.168.54.204)
Hodnocení autora: není
Příspěvků: 0
Možná je nějaké elegantní řešení.Mě napadá jen vytvořit si tři dialogy a každý si pojmenovat podle sebe, a pak ho použít pro daný úkon
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Změna názvu 2. formuláře

Datum: 6.12.2008 14:16
Autor: neregistrovaný (194.228.36.34)
Hodnocení autora: není
Příspěvků: 0
To si nemyslím. Když má dialog1 vlastnost "Text", tak se dá určitě změnit. Otázka je, jak. Kod by mel být asi zapsán v události click.button1.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Sčítání hodnot v sloupci

Datum: 5.12.2008 15:20
Autor: neregistrovaný (62.168.54.204)
Hodnocení autora: není
Příspěvků: 0
Ahoj.
chtěl bych přidat do aplikace tlačítko a textbox pro spočítání celkového zůstatku.Tz.spočítat hodnoty sloupce "Částka" z ListView.Jde to?

díky
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Sčítání hodnot v sloupci

Datum: 16.12.2008 15:00
Autor: neregistrovaný (130.119.248.40)
Hodnocení autora: není
Příspěvků: 0
Dobrý den,
pokud se podíváte co se děje s položkama při zavření formuláře, tak tam bych viděl návod na řešení.

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Dim soubor As New IO.StreamWriter("database.txt")
        For i As Integer = 0 To ListView1.Items.Count - 1
            soubor.WriteLine(ListView1.Items(i).SubItems(0).Text)
            soubor.WriteLine(ListView1.Items(i).SubItems(1).Text)
            soubor.WriteLine(ListView1.Items(i).SubItems(2).Text)
        Next
        soubor.Close()
    End Sub
 
vytvořil bych si proměnnou součet
použil bych forcyklus a v něm do proměnné součet sčítal všechny SubItems(1)
výsledek bych zobrazil ve Vašem textboxu.

Petr
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Sčítání hodnot v sloupci

Datum: 26.12.2008 9:01
Autor: neregistrovaný (90.177.222.71)
Hodnocení autora: není
Příspěvků: 0
tak to bych neřekl....měl by jste se pořádně podívat a promyslet si co píšete..:)
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Sčítání hodnot v sloupci

Datum: 16.2.2009 8:57
Autor: neregistrovaný (130.119.248.41)
Hodnocení autora: není
Příspěvků: 0
Dobrý den,
Omlouvám se, jestli jsem nepochopil Vaší otázku, ale zdá se mi jasná. Stále si myslím, že by Vám to mohlo pomoci.

'btn_secti click
dim soucet as integer=0
        For i As Integer = 0 To ListView1.Items.Count - 1
        soucet=soucet+Cint(ListView1.Items(i).SubItems(0).Text)
        Next
        textBox.text=Cstr(soucet)
    End Sub
 



 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

Re: Sčítání hodnot v sloupci

Datum: 3.2.2011 14:19
Autor: neregistrovaný (88.103.170.137)
Hodnocení autora: není
Příspěvků: 0
Opsal jsem kód přesně podle ukázky, ale položky se po kliknutí na talčítko nesečtou.

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim soucet As Integer = 0
        For i As Integer = 0 To ListView1.Items.Count - 1
            soucet = soucet + CInt(ListView1.Items(i).SubItems(1).Text)
        Next
        TextBox1.Text = CInt(soucet)
    End Sub
End Class

 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

database.txt

Datum: 16.12.2008 14:53
Autor: neregistrovaný (130.119.248.41)
Hodnocení autora: není
Příspěvků: 0
Dobrý den,
když přidám položku do seznamu a form1 pak zavřu, tak tuhle položku nemohu najít v database.txt.
Ale když VB2008 zavřu a znova otevřu, pak spustím aplikaci, tak ta přidaná položka tam stále je a v database.txt stále není. Kde je tahle položka uložena?
děkuji za odpověď.
Petr S.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: database.txt

Datum: 16.12.2008 16:20
Autor: neregistrovaný (130.119.248.40)
Hodnocení autora: není
Příspěvků: 0
Tak už vím. Vytvořil se jiný database.txt v jiném adresáři. Tam už jsou data ok.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Add -> Windows Form chybí

Datum: 10.1.2009 21:27
Autor: neregistrovaný (90.176.76.238)
Hodnocení autora: není
Příspěvků: 0
Dobrý den, mám problém s přidáním druhého formuláře. Mám Visual 2005 Professional Edition a když dám na projektu Add -> New Item, tak tam nemám ani DIALOG ani WINDOWS FORM, je tam pouze například Inherited Form...
 
           [Odpovědět]
 
Hodnocení: -1 Čekejte, prosím...

Re: Add -> Windows Form chybí

Datum: 23.3.2009 20:47
Autor: neregistrovaný (193.165.151.78)
Hodnocení autora: není
Příspěvků: 0
Zdravím, stáhněte si Microsoft Visual Basic 2008 Express Edition ze stránek Microsoftu. Je to volná verze zdarma.
Najdete na stránkách http://www.microsoft.com/express/downloa...
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Dotaz

Datum: 31.3.2009 15:08
Autor: neregistrovaný (85.71.12.62)
Hodnocení autora: není
Příspěvků: 0
Dobrý den. Nevím si rady s následujícím problémem. Pokud mám 2 formuláře (Form1 jako hlavní a např. Vstup jako formulář pro vstup dat), které mají oba globální proměnné (např pole), se kterými provádějí svoje výpočty. Pokud vyvolám formulář Vstup jako instanci a chci pracovat s aktuálním obsahem proměnné pole formuláře Form1, jak mám k ní přistupovat? Jde to způsobem MsgBox(Form1.pole(4)), ale když vytvořím instanci dlg a přistoupím k proměnné MsgBox(dlg.pole(4)), tak je hodnota nulová. Otázka tedy zní. Je přístup prvním způsobem k hodnotě formuláře Form1 správný?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Dotaz

Datum: 31.3.2009 15:39
Autor: neregistrovaný (85.71.12.62)
Hodnocení autora: není
Příspěvků: 0
Dobrý den, můj dotaz je ohledně komponenty Listview. Rád bych se zeptal, jak docílit toho, že po kliknutí na jakýkoliv datový záznam v listview lze okamžitě záznam upravit. Našel jsem labelwrap=true, ale lze upravit jen záznam v prvním sloupečku. Rád bych upravil i pole např. ve čtvrtém sloupečku. Děkuji
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Dotaz

Datum: 31.3.2009 15:44
Autor: neregistrovaný (85.71.12.62)
Hodnocení autora: není
Příspěvků: 0
oprava: labeledit=true ne labelwrap=true...Dotaz ale stále platí
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

With blok

Datum: 19.5.2009 9:18
Autor: neregistrovaný (194.228.235.12)
Hodnocení autora: není
Příspěvků: 0
píšete:
Pokud by bylo opakování na dvou místech, With blok se nevyplatí. Ale pokud je to prakticky na každém řádku, rozhodně doporučuji tento blok použít. Kódu je méně a lépe se v něm orientuje.

předpokládám, že jako ve VB6,
je další základní výhodou, zrychlení vykonávání kódu.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

DialogResult.OK

Datum: 10.7.2009 21:00
Autor: neregistrovaný (84.47.38.205)
Hodnocení autora: není
Příspěvků: 0
Zdravim mam problem a neviem kde je.. mam toto

Dim dlg As New Dialog1()
If dlg.ShowDialog() = DialogResult.OK Then

prikazy...

end if

no lenze ked sa mi zobrazi ten dialog a zmacknem OK tak nic proste len nato mackam ale nic sa nedeje nevykona sa nic...a ked zmenim dialogResult.OK na dialogResult.Cancel tak v pohode splni tu podmienku co je podtym ale musim zmacknut cancel... proste ten OK mi vobec nejde a ja uz nechapem kde moze byt chyba.. :(
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

database

Datum: 8.11.2009 0:03
Autor: neregistrovaný (89.111.97.211)
Hodnocení autora: není
Příspěvků: 0
jen takový dotaz neměla by si třeba ta aplikace po ukončení nebo někdy v průběhu taky ty data uložit do databáze? aspoň mislím že v článku nic o tm nebylo
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

otazka

Datum: 9.11.2009 14:07
Autor: neregistrovaný (213.19.34.10)
Hodnocení autora: není
Příspěvků: 0
Zdravím, měl bych jednu otázku, která zní: když mám vytvořený hlavní form a
> na něm je tláčítko ve kterém je kod, aby se utevřel dialog jako dim dlg as new
> dialog1
> if dlg.showdialog then
> end if
> Na dialogu mám tento formulář
> http://www.vbnet.cz/clanek--34-vb_net_od...
> A tak se vás ptám jak mám udělat aby se zápis pridaný listview ukazovalo na
> hlavním form místo label pro daný den záznam s listview.
> Děkuji za odpověď.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Pomoc

Datum: 18.11.2009 20:47
Autor: neregistrovaný (86.49.61.131)
Hodnocení autora: není
Příspěvků: 0
Nemohli byste mi prosím poradit příkaz abych mohl s položkama v ListView pohybovat nahoru a dolu?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Prosba

Datum: 11.2.2010 21:38
Autor: neregistrovaný (89.24.177.231)
Hodnocení autora: není
Příspěvků: 0
Omlouvám se za příspěvek který je možná off topic - jsem úplný začátečník ve vb a prosím o jednu radu, pokud může někdo pomoci...

Jakým způsobem donutit dva formuláře k vzájemnému předávání proměnných? Mám formulář frmMain který otevře formulář frmLogin - na kterém jsou pole txtLogin a txtPassword do kterých je možno vepsat údaje.. po přihlášení bych potřeboval formuláři (frmMain) předat hodnoty txtLogin.Text do proměnné varLogin a stejně tak txtPassword.Text do varPassword - už se s tím trápím dva dny a nemohu přijít na to jak to udělat - byl by někdo tak hodný a poradil?
Omlouvám se, že otravuji :)
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Prosba

Datum: 11.2.2010 21:42
Autor: Slavek Parenica
Hodnocení autora: 0
Příspěvků: 1
nebyl jsem přihlášený - omlouvám se - můj email je slaveklbc@hotmail.com
Dotaz na který "odpovídám" je můj..
Pro úplnost používám VB2008pro.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Prosbicka

Datum: 24.3.2010 5:11
Autor: neregistrovaný (209.207.95.44)
Hodnocení autora: není
Příspěvků: 0
Mohl by mi nekdo prosim poradit?
V prvnim formulari provedu nejaky vypocet a kdyz zobrazim druhy formular, chtel bych aby se mi predchozi vysledek nacetl do tohoto folmulare jako startovaci hodnota.
Nevite nekdo jak na to?
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Přímy a Výdaje

Datum: 18.12.2010 18:18
Autor: neregistrovaný (89.103.96.12)
Hodnocení autora: není
Příspěvků: 0
Zde jsem sestavoval podle návodu aplikaci přímý a výdaje. Snažil jsem se to pochopit, a poněvadž jsem se nadchnul tak jsem se pustil do kalkulačky a tisku a ejhle v tu chvíli jsem si uvědomil, že se mam ještě kopu věcí naučit :-)než se do něčeho takového pustím ale, poněvadž Mi to vrtalo hlavou a nedalo spát zde je výsledek hledání a zkoumání po internetu a v literatuře.

Imports System.Drawing.Printing
Public Class Form1

    Private Property StringToPrint As String

    Private Property btnPrint As Object


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'načtení vstupu
        Dim soubor As New IO.StreamReader("date.txt")       'otevřít soubor
        While Not soubor.EndOfStream                            'číst, dokud nejsme na konci souboru
            Dim datum As DateTime = CDate(soubor.ReadLine())    'načíst první řádek z trojice - datum
            Dim castka As Double = CDbl(soubor.ReadLine())      'načíst druhý řádek z trojice - částka
            Dim text As String = soubor.ReadLine()              'načíst třetí řádek z trojice - popis transakce

            'přidat položku do seznamu
            Dim polozka As New ListViewItem()                   'vytvořit novou položku seznamu
            If castka < 0 Then polozka.ForeColor = Color.Red 'pokud je částka menší než nula, obarvit položku červeně
            polozka.Text = datum                                'vypsat datum
            polozka.SubItems.Add(castka)                        'přidat druhý sloupeček s částkou
            polozka.SubItems.Add(text)                          'přidat třetí sloupeček s popisem
            ListView1.Items.Add(polozka)                        'přidat položku do seznamu
        End While
        soubor.Close()
    End Sub

    Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
        Button1.Text = "0"
        Label1.Text = ""
        Label2.Text = ""
        Label3.Text = ""
    End Sub

    Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
        End
    End Sub

    Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
        If Label1.Text > "" And Label2.Text = "+" Then
            Button1.Text = Val(Label1.Text) + Val(Button1.Text)
            Label3.Text = Button1.Text
        ElseIf Label2.Text > "" And Label2.Text = "-" Then
            Button1.Text = Val(Label1.Text) - Val(Button1.Text)
            Label3.Text = Button1.Text
        ElseIf Label2.Text > "" And Label2.Text = "*" Then
            Button1.Text = Val(Label1.Text) * Val(Button1.Text)
            Label3.Text = Button1.Text
        ElseIf Label2.Text > "" And Label2.Text = "/" Then
            Button1.Text = Val(Label1.Text) / Val(Button1.Text)
            Label3.Text = Button1.Text
        Else
        End If
    End Sub

    Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
        Label2.Text = "+"
        Label1.Text = Button1.Text
    End Sub

    Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        Label2.Text = "-"
        Label1.Text = Button1.Text
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        Label2.Text = "*"
        Label1.Text = Button1.Text
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Label2.Text = "/"
        Label1.Text = Button1.Text
    End Sub

    Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "0"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "0"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "0"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "0"
        Else
            Button1.Text = Button1.Text & "0"
        End If
    End Sub

    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If Button1.Text = "0" Then
            Button1.Text = ","
        ElseIf Button1.Text = Label1.Text Then
            Button1.Text = ","
        Else
            If Button1.Text.Contains(",") Then
            Else
                Button1.Text = Button1.Text & ","
            End If
        End If
    End Sub

    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "1"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "1"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "1"
        Else
            Button1.Text = Button1.Text & "1"
        End If
    End Sub

    Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "2"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "2"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "2"
        Else
            Button1.Text = Button1.Text & "2"
        End If
    End Sub

    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "3"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "3"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "3"
        Else
            Button1.Text = Button1.Text & "3"
        End If
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "4"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "4"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "4"
        Else
            Button1.Text = Button1.Text & "4"
        End If
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "5"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "5"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "5"
        Else
            Button1.Text = Button1.Text & "5"
        End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "6"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "6"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "6"
        Else
            Button1.Text = Button1.Text & "6"
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "7"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "7"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "7"
        Else
            Button1.Text = Button1.Text & "7"
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "8"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "8"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "8"
        Else
            Button1.Text = Button1.Text & "8"
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If Button1.Text = Label1.Text Then
            Button1.Text = "9"
        ElseIf Button1.Text = "0" Then
            Button1.Text = "9"
        ElseIf Button1.Text = Label3.Text Then
            Button1.Text = "9"
        Else
            Button1.Text = Button1.Text & "9"
        End If
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label4.Text = Date.Now().ToString("F")
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'uložit data
        Dim soubor As New IO.StreamWriter("date.txt")           'otevřít soubor
        For i As Integer = 0 To ListView1.Items.Count - 1           'projít všechny položky seznamu
            soubor.WriteLine(ListView1.Items(i).SubItems(0).Text)   'zapsat datum
            soubor.WriteLine(ListView1.Items(i).SubItems(1).Text)   'zapsat částku
            soubor.WriteLine(ListView1.Items(i).SubItems(2).Text)   'zapsat popis
        Next
        soubor.Close()
    End Sub
    'Sub pro vytištění textu
    Private Sub PrintText(ByVal sender As Object, _
      ByVal ev As PrintPageEventArgs)
        ' Text v objektu Graphics vytvoří metodou DrawString
        ev.Graphics.DrawString(TextBox2.Text, New Font("Arial", _
          18, FontStyle.Bold), Brushes.Black, 100, 100)
        ' určí, že je do poslední stránka, která se má tisknout
        ev.HasMorePages = False

    End Sub


    Private Sub Button22_Click(ByVal sender As System.Object, ByVal ex As System.EventArgs) Handles Button22.Click
        ' Tisk pomocí zpracovatele chyby, aby se zachytily případné potíže
        Try
            ' Deklaruje proměnnou PrintDoc typu PrintDocument
            Dim PrintDoc As New PrintDocument()
            AddHandler PrintDoc.PrintPage, AddressOf Me.PrintText
            PrintDoc.Print()   'tisk  textu
        Catch e As Exception  ' zachytí výjimky související s tiskem
            MessageBox.Show("ERROR PRINT")
        End Try



    End Sub

   
    Private Sub Button15_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
        Dim dlg As New Dialog1()                                'vytvořit objekt nového okna
        If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

            'zjistit hodnoty z okna
            Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
            Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
            Dim text As String = dlg.TextBox1.Text              'zjistit popis

            Dim polozka As New ListViewItem()                   'vytvořit novou položku seznamu
            If castka < 0 Then polozka.ForeColor = Color.Red 'pokud je částka menší než nula, obarvit položku červeně
            polozka.Text = datum.ToShortDateString()   'vypsat datum
            polozka.SubItems.Add(castka)                        'přidat druhý sloupeček s částkou
            polozka.SubItems.Add(text)                          'přidat třetí sloupeček s popisem
            ListView1.Items.Add(polozka)                        'přidat položku do seznamu
        End If

    End Sub

    Private Sub Button20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic neupravovat

        With ListView1.SelectedItems(0)
            Dim dlg As New Dialog1()                                'vytvořit objekt nového okna

            'nastavit do okna hodnoty ze seznamu
            dlg.DateTimePicker1.Value = CDate(.SubItems(0).Text)      'nastavit datum
            dlg.NumericUpDown1.Value = CDbl(.SubItems(1).Text)        'nastavit částku
            dlg.TextBox1.Text = .SubItems(2).Text                     'nastavit popis

            If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

                'zjistit hodnoty z okna
                Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
                Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
                Dim text As String = dlg.TextBox1.Text              'zjistit popis

                'pokud je částka menší než nula, obarvit položku červeně, jinak ji obarvit černě
                If castka < 0 Then .ForeColor = Color.Red Else .ForeColor = Color.Black
                .SubItems(0).Text = datum.ToShortDateString()            'vypsat datum
                .SubItems(1).Text = castka                               'přidat druhý sloupeček s částkou
                .SubItems(2).Text = text                                 'přidat třetí sloupeček s popisem
            End If
        End With
    End Sub

    Private Sub Button21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button21.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic nemazat

        ListView1.Items.Remove(ListView1.SelectedItems(0))

    End Sub
End Class
 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Sčítání položek

Datum: 2.2.2011 13:58
Autor: neregistrovaný (88.103.170.137)
Hodnocení autora: není
Příspěvků: 0
Dobrý den, mohl by sem někdo přidat příspěvek, jak napsat kód, aby se po kliknutí na tlačítko zobrazil součet všech položek? Přemýšlel jsem nad tím, ale nic mě nenapadlo.
Děkuji
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Sčítání položek

Datum: 16.2.2011 7:13
Autor: neregistrovaný (213.160.182.208)
Hodnocení autora: není
Příspěvků: 0
Sčítanie položiek by malo byť jednoduché. Mal by to robiť trebárs tento kód (na formulár je pridané tlačítko Button4 ktoré spúšťa kód a TextBox1, kde sa suma vypíše):


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim suma As Double = 0
        For i = 0 To ListView1.Items.Count - 1
            suma = suma + CDbl(ListView1.Items(i).SubItems(1).Text)
        Next
        TextBox1.Text = CStr(suma)
    End Sub
 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Jak smazat více položek najednou?

Datum: 10.3.2011 17:56
Autor: neregistrovaný (213.226.209.147)
Hodnocení autora: není
Příspěvků: 0
Dobrý den. Pokoušel jsem se přijít na to, jak smazat více položek, když je označím. Napsal jsem na to cyklus, ale pořád se mi nedaří přijít na to, kde mám chybu. Prosím o pomoc.



For i As Integer = 0 To ListView1.SelectedItems.Count - 1  'opakovat cyklus dokud se "i" nerovná "počtu označených položek - 1"
            ListView1.Items.Remove(ListView1.SelectedItems(i))     'smazat položku
Next

 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Jak smazat více položek najednou?

Datum: 19.4.2011 21:04
Autor: neregistrovaný (213.211.39.46)
Hodnocení autora: není
Příspěvků: 0
Dobrý den.
Více položek se dá smazat takto:

For i As Integer =  ListView1.SelectedItems.Count - 1 To 0 Step -1  
            ListView1.Items.Remove(ListView1.SelectedItems(i))     
Next
 
 
           [Odpovědět]
 
Hodnocení: 1 Čekejte, prosím...

Malý dotaz

Datum: 27.4.2011 18:57
Autor: neregistrovaný (77.48.180.138)
Hodnocení autora: není
Příspěvků: 0
PŘEKOPÍROVAL jsem vše z tohoto webu do VB.
Náhle se mi stává že když vše v dialogu vyplním tak že se mi z ůdajů v list form oběvují pouze datum a to né ani celé.


Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dlg As New Dialog1()                                'vytvořit objekt nového okna
        If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

            'zjistit hodnoty z okna
            Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
            Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
            Dim text As String = dlg.TextBox1.Text              'zjistit popis

            Dim polozka As New ListViewItem()                   'vytvořit novou položku seznamu
            If castka < 0 Then polozka.ForeColor = Color.Red 'pokud je částka menší než nula, obarvit položku červeně
            polozka.Text = datum.ToShortDateString()   'vypsat datum
            polozka.SubItems.Add(castka)                        'přidat druhý sloupeček s částkou
            polozka.SubItems.Add(text)                          'přidat třetí sloupeček s popisem
            ListView1.Items.Add(polozka)                        'přidat položku do seznamu
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic neupravovat

        With ListView1.SelectedItems(0)
            Dim dlg As New Dialog1()                                'vytvořit objekt nového okna

            'nastavit do okna hodnoty ze seznamu
            dlg.DateTimePicker1.Value = CDate(.SubItems(0).Text)      'nastavit datum
            dlg.NumericUpDown1.Value = CDbl(.SubItems(1).Text)        'nastavit částku
            dlg.TextBox1.Text = .SubItems(2).Text                     'nastavit popis

            If dlg.ShowDialog() = DialogResult.OK Then              'zobrazit okno a počkat na zavření, pokud je OK, tak ...

                'zjistit hodnoty z okna
                Dim datum As DateTime = dlg.DateTimePicker1.Value   'zjistit datum
                Dim castka As Double = dlg.NumericUpDown1.Value     'zjistit částku
                Dim text As String = dlg.TextBox1.Text              'zjistit popis

                'pokud je částka menší než nula, obarvit položku červeně, jinak ji obarvit černě
                If castka < 0 Then .ForeColor = Color.Red Else .ForeColor = Color.Black
                .SubItems(0).Text = datum.ToShortDateString()            'vypsat datum
                .SubItems(1).Text = castka                               'přidat druhý sloupeček s částkou
                .SubItems(2).Text = text                                 'přidat třetí sloupeček s popisem
            End If
        End With
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If ListView1.SelectedItems.Count = 0 Then Exit Sub 'pokud není vybrána žádná položka, nic nemazat

        ListView1.Items.Remove(ListView1.SelectedItems(0))
    End Sub
End Class

 
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Filtr

Datum: 28.8.2011 16:13
Autor: Michal Spáčil
Hodnocení autora: -1
Příspěvků: 2
Jak udělám filtr v listview? Prosím pomoc.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.