• Nie Znaleziono Wyników

Tablice, DataGridView Gdy ro

N/A
N/A
Protected

Academic year: 2021

Share "Tablice, DataGridView Gdy ro"

Copied!
10
0
0

Pełen tekst

(1)

1

Tablice, DataGridView

Gdy rośnie liczba danych do przechowywania w programie, a następnie ich obrobienia - pojawiają się nowe struktury danych (moŜna by powiedzieć „pojemniki” na dane) zwane tablicami.

Tablica moŜe przechowywać wiele danych. Wszystkie one będą tego samego typu, będą miały tę samą nazwę (nazwę tablicy), a do poszczególnych danych zawartych w tablicy odwołujemy się za pomocą indeksów (kolejnych numerów tych danych w tablicy).

Tablice mogą być jednowymiarowe (np. wektor), dwuwymiarowe (np. szachownica) i wielowymiarowe (np. prostopadłościan, ...).

Tworzenie tablicy

Tworzenie tablicy to jej deklarowanie. Tablicę deklarujemy tak jak zmienną, musimy określić jej nazwę, liczbę wymiarów, rozmiary tych wymiarów, typ danych w tablicy.

Pierwszy element tablicy ma zawsze index zero, 0.

Przykłady:

• Dim studenci(14) As String – deklaracja tablicy jednowymiarowej, przechowującej nazwiska UWAGA: 15 studentów. Odwołanie do pierwszego elementu tablicy to:

studenci(0).

• Dim temperatury(11,30) – deklaracja tablicy o 12 wierszach (od 0 do 11)

i 31 kolumnach (od 0 do 30), np. do przechowywania max. temperatury kaŜdego dnia w roku.

W wierszach będą numery miesięcy (styczeń – 0, luty – 1, marzec – 2, itd.), a w kolumnach numery dni.

Temperatura w dniu 1-go kwietnia to będzie komórka tabeli: temperatury(3, 0).

o Dim – słowo kluczowe,

o nazwa tablicy - zasada ta sama jak przy tworzeniu nazwy zmiennej.

o liczba wymiarów – wynika z liczby elementów w nawiasie oddzielonych przecinkami.

nazwaTablicy(9) – jednowymiarowa, nazwaTablicy(3, 5) dwuwymiarowa, nazwaTablicy(3,10,18) – trójwymiarowa.

o rozmiary tych wymiarów – wartości liczb w nawiasie

nazwaTablicy(9) – jednowymiarowa o 10 elementach numerowanych od 0 do 9,

nazwaTablicy(5, 4) dwuwymiarowa o 6 wierszach od 0 do 5 i 5 kolumnach takŜe od 0 do 4, rys.1.

nazwaTablicy(3,10,19) – trójwymiarowa (jakby prostopadłościan) o 4 wierszach numerowanych od 0 do 3, 11 kolumnach numerowanych od 0 do 10 i 20 warstwach (poziomach) od 0 do 19.

Przykład: Narysować tabelę Dane(5,4), w której komórki kaŜdej następnej kolumny zawierają wartości dwa razy większe od sąsiednich komórek w kolumnie poprzedniej, rys. 1.

numery kolumn

0 1 2 3 4

0 1 2 4 8 16

1 2 4 8 16 32 2 3 6 12 24 48 3 4 8 16 32 64 4 5 10 20 40 80

numery wierszy

5 6 12 24 48 96

Rysunek 1. Tabela Dane(5, 4), 6 wierszy i 5 kolumn;

element Dane(3,2) przechowuje wartość 16

(2)

Krótkie omówienie obiektu DataGridView

Często potrzebujemy obiektu, który wyświetliłby tabelę zawierającą kilka kolumn i kilka wierszy. Dobrze do tego celu nadaje się obiekt DataGridView1.

Po przeniesieniu obiektu na formularz jest on pusty – brak kolumn i wierszy - pojawi się jednak podręczna lista zadań (DataGridView Tasks), rys. 2, z której moŜemy wybrać potrzebne działania.

Rysunek 2

Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 3.

Rysunek 3. Dodawanie kolumny

Po kliknięciu przycisku dodana zostanie kolumna, rys. 4. Proszę zwrócić uwagę na wartość pozycji Type:

DataGridViewTextBoxColumn (rys. 3), wybranie takiego typu komórek dla kolumny oznacza, Ŝe wszystkie komórki w dodanej kolumnie będą typu TextBox, rys.4.

(3)

3 Rysunek 4. DataGridView po dodaniu kolumny z komórkami typu tekstowego

MoŜemy dodawać kolumny typu, rys. 5:

• Przycisk – DataGridViewButtonColumn

• Kratka wyboru – DataGridViewCheckBoxColumn

• ListaRozwijalna – DataGridViewComboBoxColumn

• Rysunek – DataGridViewImageColumn

• Odsyłacz – DataGridViewLinkColumn

• Okno tekstowe - DataGridViewTextBoxColumn

Rysunek 5. Wybór typu kolumny

Aby sprawdzić postać wiersza z komórkami róŜnego typu, moŜemy testowo zdefiniować 6 kolumn o typach: (Column1) TextBox, (Column2) CheckBox, (Column3) ComboBox, (Column4) Image, (Column5) Link, (Column6) Button.

(4)

W kaŜdej chwili moŜna zmienić wszystkie elementy w projektowanym obiekcie DataGridView. W tym celu naleŜy z listy zadań wybrać pozycję Edit Column, rys. 6 (pozycja1), co otworzy formularz edycji kolumn, rys. 6 (pozycja 2).

Rysunek 6. Edycja właściwości i rozmieszczenia kolumn

Narzędzia tego formularza pozwalają zmieniać połoŜenie kolumny w wierszu (pozycja 3), właściwości wskazanej kolumny (pozycja 4), dodawać i usuwać kolumny (pozycja 5).

Aby opanować dostęp do komórek obiektu DataGridView wykonajmy następujące zadanie.

(5)

5 Zadanie

Utworzyć obiekt DataGridView o trzech kolumnach typu TextBox i przyciski obsługujące procedury o następujących działaniach, patrz rys. 7:

Rysunek 7. Propozycja formularza

Sposób odwołania się do pojedynczej komórki w celu pobrania/wstawienia wartości pokazuje rys. 8.

Uwaga: NaleŜy podkreślić, Ŝe komórki (kolumny i wiersze) numerowane są od 0 i odwołujemy się do nich w kolejności najpierw kolumna potem wiersz: Item(kolumna, wiersz), a nie

Tablica(wiersz, kolumna) jak w tablicach.

Rysunek 8. Sposób zapełnienia komórek

1. Zapełnić Grid o 4 wierszach i 3 kolumnach kolejnymi liczbami całkowitymi.

2. Zapełnić Grid o 3 wierszach i 3 kolumnach liczbą 1 na przekątnej głównej.

3. Zapełnić Grid o 3 wierszach i trzech kolumnach liczbą 2 na drugiej przekątnej.

4. Usunąć wiersz z indeksem 0.

5. Usunąć wiersz z indeksem 1.

6. Usunąć wiersz wskazany myszą (kliknięty).

(6)

Budowę aplikacji rozpoczniemy od umieszczenia na formularzu obiektu DataGridView1 i utworzenia w nim jednego wiersza o 3 kolumnach, patrz rys. 3 pozycja Add Column..., rys. 9, następnie dodamy 6 przycisków, jak na rys. 7, o przykładowych nazwach jak tablicy pod rysunkiem 9.

Rysunek 9. Dodajemy wiersz o 3 kolumnach

Name Text

btn4x3_kolejne 4 wiersze x 3 kolumny, kolejne liczby btn3x3__przekatna_1 3 wiersze x 3 kolumny, 1 na przekątnej

btn3x3_druga_przekatna_2 3 wiersze x 3 kolumny, 2 na drugiej przekątnej btnUsun_wiersz_0 Usuń wiersz 0

btnUsun_wiersz_1 Usuń wiersz 1

btnUsunWskazanyWiersz Usuń wskazany wiersz

Skrócony opis metod i właściwości obiektu DataGridView zamieściłem w pliku vb6.01_gridview_skrot.pdf.

PoniewaŜ znana jest liczba kolumn i wierszy (mamy je wskazane w poleceniu zadania na rys. 7), to do obsługiwania Gridu posłuŜymy się instrukcją For ... Next, w której moŜemy określić ile razy cykl zostanie wykonany (w odróŜnieniu od instrukcji Do While...Loop, która moŜe być wykonywana "nie widomo ile razy").

Więcej informacji umieszczę w komentarzach, w kodzie.

(7)

7 Kody procedur

Private Sub btn4x3_kolejne_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles btn4x3_kolejne.Click

'Zapełnianie siatki 4 wiersze na 3 kolumny kolejnymi liczbami.

'Uwaga na numerację kolumn i wierszy!

'numery | 0 1 2 '---+--- ' 0 | 1 2 3 ' 1 | 4 5 6 ' 2 | 7 8 9 ' 3 | 10 11 12 '---

Dim kol, wie, Liczba As Integer DataGridView1.Rows.Clear()

Liczba = 0

For wie = 0 To 3

DataGridView1.Rows.Add() For kol = 0 To 2

Liczba = Liczba + 1

DataGridView1.Item(kol, wie).Value = Liczba.ToString '--- Next

Next End Sub

Private Sub btn3x3__przekatna_jedynki_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) _ Handles btn3x3__przekatna_jedynki.Click 'Wstawianie liczby 1 na głównej przekatnej

'--- Dim i As Integer

DataGridView1.Rows.Clear() For i = 0 To 2

DataGridView1.Rows.Add()

DataGridView1.Item(i, i).Value = "1"

'--- Next

End Sub

Private Sub btn3x3_druga_przekatna_2_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) _ Handles btn3x3_druga_przekatna_2.Click 'Wstawianie liczby 2 na drugiej przekątnej

'--- Dim i As Integer

DataGridView1.Rows.Clear() For i = 0 To 2

DataGridView1.Rows.Add()

DataGridView1.Item(2 - i, i).Value = "2"

'--- Next

End Sub

(8)

Private Sub btnUsun_wiersz_Click(ByVal sender As _

System.Object, ByVal e As System.EventArgs) _ Handles btnUsun_wiersz_0.Click

'Usuwanie wiersza z indeksem 0 '--- Dim odp As DialogResult

odp = MsgBox("Czy usunąć pierwszy wiersz (z indexem 0)?", _ MsgBoxStyle.Question + MsgBoxStyle.YesNo) Try

If odp = Windows.Forms.DialogResult.Yes Then DataGridView1.Rows.RemoveAt(0)

'--- End If

Catch ex As Exception

MsgBox(Err.Description & vbCrLf & _

"Tzn. takiego, który ma gwiazdkę", , _ "Błąd nr " & Err.Number)

End Try End Sub

Private Sub btnUsun_wiersz_1_Click(ByVal sender As _

System.Object, ByVal e As System.EventArgs) _ Handles btnUsun_wiersz_1.Click

'Usuwanie wiersza z indeksem 1 '--- Dim LiczbaWierszy As Integer Dim odp As DialogResult

odp = MsgBox("Czy usunąć wiersz z indexem 1 (czyli drugi)?", _ MsgBoxStyle.Question + MsgBoxStyle.YesNo)

Try

If odp = Windows.Forms.DialogResult.Yes Then LiczbaWierszy = DataGridView1.Rows.Count If LiczbaWierszy - 1 >= 1 Then

MsgBox("LiczbaWierszy=" & _

LiczbaWierszy.ToString & vbCrLf & _ "Spróbujemy usunąć")

End If

DataGridView1.Rows.RemoveAt(1) '--- End If

Catch ex As Exception

MsgBox(Err.Description, , "Błąd nr " & Err.Number) End Try

End Sub

(9)

9 Private Sub btnUsunWskazanyWiersz_Click(ByVal sender As _

System.Object, ByVal e As System.EventArgs) _ Handles btnUsunWskazanyWiersz.Click

'Usuwanie wskazanego wiersza.

'Wiersz moŜna wskazać

'wskazując cały wiersz lub wskazując komórkę w wierszu '--- Dim NrWiersza As Integer

NrWiersza = DataGridView1.SelectedCells.Item(0).RowIndex ' --- Try

DataGridView1.Rows.RemoveAt(NrWiersza) '--- Catch ex As Exception

MsgBox(Err.Description, , "Błąd nr " & Err.Number) End Try

End Sub

'...

'A gdyby naleŜało zapełnić siatkę kolejnymi liczbami,

'ale umieszczając je kolejno nie w wierszach lecz w kolumnach?

'

'numery | 0 1 2

'---+--- ' 0 | 1 5 9

' 1 | 2 6 10 ' 2 | 3 7 11 ' 3 | 4 8 13 '---

' . . . .

'Bez uŜycia tabeli jako elementu pośredniego ...

'DataGridView1.Rows.Clear() 'usuwanie wierszy 'For wiersz = 0 To 3

' DataGridView1.Rows.Add() ' Liczba = wiersz + 1 ' For kolumna = 0 To 2

' DataGridView1.Item(kolumna, wiersz).Value = Liczba.ToString ' '--- ' Liczba = Liczba + 4

' Next 'Next

'...

(10)

'...

'Z uŜycim tabeli

' . . . 'Dim tabela(3, 2) As Integer '' Tworzenie tabeli

'DataGridView1.Rows.Clear() 'usuwanie wierszy 'For kolumna = 0 To 2

' For wiersz = 0 To 3 ' Liczba = Liczba + 1

' tabela(wiersz, kolumna) = Liczba ' Next

'Next

''Zapełnianie siatki wierszami 'For wiersz = 0 To 3

' DataGridView1.Rows.Add() ' For kolumna = 0 To 2

' DataGridView1.Item(kolumna, wiersz).Value = _ tabela(wiersz, kolumna).ToString

' --- ' Next

'Next

'...

Cytaty

Powiązane dokumenty

Uruchom program, sprawdź efekt podania wartości, która nie występuje w tablicy, wartości występującej w tablicy oraz efekt niepoprawnego podania liczby.. catch z

Przy każdym z podanych niżej przykładów wpisz literę „P”, jeśli jest on prawdziwy, lub literę „F”, jeśli jest fałszywy. a) Filippo Buonaccorsi znany pod przydomkiem

Wszystkie Wasze prace będą

Zapoznaj się z nową wiadomością na temat wykresów zdań (podręcznik, strona 285).. Wykonaj zadanie 7

Przenoszenie zakażenia COVID-19 z matki na dziecko rzadkie Wieczna zmarzlina może zacząć uwalniać cieplarniane gazy Ćwiczenia fizyczne pomocne w leczeniu efektów długiego

Gałuszka, sala MS Teams lub BigBlueButton 3 spotkania po 2 godziny oraz 10 godzin na platformie e-learningowej.. 19 października, 30 listopada, 7 grudnia Psychologia ogólna (ćw.)

4) w przypadku działań dotyczących tworzenia warunków do prowadzenia przez jednostki powiatowe (miejskie) Państwowej Straży Pożarnej praktycznych zajęć edukacyjnych dla

8.2 W sprawach związanych z przetwarzaniem danych osobowych przez Bank Uczestnicy mogą się kontaktować z Bankiem za pośrednictwem poczty elektronicznej na adres: bok.bank@vwfs.com