NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Neaktivní uživatel:19.10.2016 18:57

Ahoj, začal jsem si dělat úkolníček v programu Visual Basic. Nevím, jak přidat při kliknutí na item ikonku hotovo (zelená), rozpracováno (modrá) nebo uzavřeno (červená). Netušíte prosím, jak tohoto efektu dosáhnout? Prosím o podrobné vysvětlení. Jsem začátečník.
Něco jednoduchého začínající nějak takto:

Private Sub ListBox1_Clic­k(sender As Object, e As EventArgs) Handles ListBox1.Click
Kód
End Sub

Odpovědět
19.10.2016 18:57
Neaktivní uživatelský účet
Avatar
Miroslav Holubek:20.10.2016 8:47

listbox túto možnosť nemá, má ju listview,
no ja by som k tomu skôr použil datagridview

 
Nahoru Odpovědět
20.10.2016 8:47
Avatar
Odpovídá na Miroslav Holubek
Neaktivní uživatel:20.10.2016 19:41

Děkuji za odpověď, neexistuje nějaká alternativa? Např. změnit pozadí itemu? Default modře 1. klik na zelenou, 2. klik na červenou. Potřeboval bych něco, čím bych si označil splněné, nesplněné a rozdělané úkoly.

Nahoru Odpovědět
20.10.2016 19:41
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Štěpánek:20.10.2016 21:24

Jestli to děláš ve winforms, tak tam moc možností není, na to je lepší wpf

Nahoru Odpovědět
20.10.2016 21:24
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Miroslav Holubek:20.10.2016 21:50

použi ten datagridview, do jedného stĺpca vlož text úlohy, do druhého nevkladaj nič, len mu v kóde zmeň farbu pozadia, kliknutím na ten stĺpec zmeň znova farbu na akú chceš, prípadne mu daj contect menu strip

nemám k dispozícii visual studio, tak ti nedám presný kód, tak to ber s rezervou

private sub LoadDataGridView()
        dgv.rowcount += 1
        dgv.rows(dgv.rowcount-1).cells(0).value = "Uloha 1"
        dgv.rows(dgv.rowocunt-1).cells(1).style.backcolor = color.red
end sub

Private Sub dgv_CellClick(sender As Object, e As EventArgs) Handles dgv.CellClick
        if e.columnindex = 1 then
                if e.backcolor = color.red then
                        e.backcolor = color.blue
                elseif e.backcolor = color.blue then
                        e.backcolor = color.green
                elseif e.backcolor = color.green
                        e.backcolor = color.red
                end if
        end if
End Sub

písal som to z hlavy, tak tam budú chyby,
skús a uvidíš či ti to vyhovuje,
datagridview má obrovské množstvo vlastností, čiže dokážes s ním dosiahnúť čokoľvek

Editováno 20.10.2016 21:51
 
Nahoru Odpovědět
20.10.2016 21:50
Avatar
Neaktivní uživatel:20.10.2016 22:14

Ahoj, děkuji za odpověď, Upravil jsem to takto:

Private Sub LoadDataListBox()
      ListBox1.rowcount += 1
      ListBox1.rows(ListBox1.rowcount - 1).cells(0).value = "Uloha 1"
      ListBox1.rows(ListBox1.rowocunt - 1).cells(1).style.backcolor = Color.Red
  End Sub

  Private Sub ListBox1_Click(sender As Object, e As EventArgs) Handles ListBox1.Click
      If e.columnindex = 1 Then
          If e.backcolor = Color.Red Then
              e.backcolor = Color.Blue
          ElseIf e.backcolor = Color.Blue Then
              e.backcolor = Color.Green
          ElseIf e.backcolor = Color.Green Then
              e.backcolor = Color.Red
          End If
      End If
  End Sub

Vyskytující se chyby:

'columnindex' is not a member of System.EventsArgs
'backcolor' is not a member of System.EventsArgs
'rowcount' is not a member of System.Window­s.Forms.ListBox
'row' is not a member of System.Window­s.Forms.ListBox

Nahoru Odpovědět
20.10.2016 22:14
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:20.10.2016 22:17

Ten dataview nenavazuje na moje funkce, kouknu na to o víkendu. To bude chtít začít celý program znova.

Nahoru Odpovědět
20.10.2016 22:17
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Miroslav Holubek:20.10.2016 22:19

jasné že ti to hádže chyby, pretože listbox nemá tieto možnosti, jasne som napísal datagridview :)
pozri si to, nemáš s tým čo pokaziť

 
Nahoru Odpovědět
20.10.2016 22:19
Avatar
Miroslav Holubek:20.10.2016 22:22

ešte teraz keď pozerám neviem či bude fungovať

e.backcolor = color...

možno to budeš musieť vymeniť za

datagridview.rows(číslo riadku).cells(číslo stĺpca).style.backcolor = color...
 
Nahoru Odpovědět
20.10.2016 22:22
Avatar
JK CZ
Člen
Avatar
Odpovídá na Neaktivní uživatel
JK CZ:21.10.2016 15:39

Pokud je to pro WinForms a chtel by si pouzit ListView, tak tady mam priklad jak vyplnit ListView s pridanim obrazku do kazdeho radku a prvniho sloupce pred text .
Je nutno na form pridat ListView nastavenim Name = lstOverview a View = Details

Je to sice jen ukazka jak zhruba na to, ale mohla by se hodit ... :-)

Pozor v kodu Do Loop nema podminku ukonceni!To si musis nejak osetrit sam...

Private Sub FillListView()

    'Vymazani vsech sloupcu
    lstOverview.Columns.Clear()

    'Vymazani vsech radku v ListView
    lstOverview.Items.Clear()

    lstOverview.Columns.Add("HeaderText1") 'Pridani sloupce do ListView

    '... Popripade pridani dalsich sloupcu do ListView
    lstOverview.Columns.Add("HeaderText2")
    lstOverview.Columns.Add("HeaderText3")

    ' Vytvoreni imagelistu
    Dim meImageStatusList As New ImageList()

    ' Cesta k souborum s obrazky
    Dim path As String = "C:\x\...."

    'Nahreani obrazku do ImageListu
    meImageStatusList.Images.Add(Bitmap.FromFile(path & "Picture1.png"))
    meImageStatusList.Images.Add(Bitmap.FromFile(path & "Picture2.png"))
    '.........

    'ImageList do  ListView.SmallImageList
    lstOverview.SmallImageList = meImageStatusList

    'Vyplneni radku ListView
    Do
        '......

        ' Cislo Obrazku ktery se ma zobrazit
        Dim imageIndex As Integer = 1

        'Pridani noveho radku s textm "Text" do ListView + vypneni indexu obrazku ktery se ma zobrazit
        Dim lsi = lstOverview.Items.Add("Text", imageIndex)

        'Popripade pridani dalsich subitems
        lsi.SubItems.Add("SubItem1Text")
        lsi.SubItems.Add("SubItem2Text")

        '....
    Loop

End Sub
 
Nahoru Odpovědět
21.10.2016 15:39
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:22.10.2016 12:56

Říkáš, že jsi začátečník. Být tebou přejdu místo zastaralého WinForms na moderní WPF, než bude pozdě se přeučovat. Opravdu to za to stojí, ze začátku si možná budeš říkat, že ne, ale až se dostaneš na věci jako právě třeba tohle oceníš to.

Nahoru Odpovědět
22.10.2016 12:56
the cake is a lie
Avatar
JK CZ
Člen
Avatar
Odpovídá na Petr Čech
JK CZ:22.10.2016 13:19

Ano doporucuji take prejit na WPF.Sice WinForm je asi trochu jednodusi, ale budes se zbytecne ucit neco co nema budoucnost....

 
Nahoru Odpovědět
22.10.2016 13:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.