01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1

Podobne dokumenty
Tablice, DataGridView

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

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

LibreOffice Calc VBA

Visual Basic: Tablice, sortowanie, r. ak. 2014/2015

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Class1.vb. _Dlugosc_stopnia = value End Set End Property Public Property Faza As Single Get Return _Faza End Get

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Aplikacje geodezyjne

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Arkusze kalkulacyjne i VBA

Tablice. Jones Stygar na tropie zmiennych

Ćwiczenie VB3.4 Struktura Try...Catch, obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków)

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Instrukcje cykliczne (pętle) WHILE...END WHILE

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min)

Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005

Wprowadzenie do systemu Delphi

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET.

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Leszek Stasiak Zastosowanie technologii LINQ w

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If

Utworzenie interfejsu graficznego za pomocą formularza użytkownika w VBA

Wprowadzenie do programowania w VBA

Macierzowe algorytmy równoległe

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Programowanie 3 - Funkcje, pliki i klasy

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

4.1. Analiza AWN jest dokonywana na poziomie VBA

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Programowanie obiektowe

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Laboratorium Programowania Kart Elektronicznych

Palindromy. Przykładowe rozwiązanie

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

5.9 Modyfikacja gry Kółko i krzyżyk

Ćwiczenia Skopiować do swojego folderu plik cwiczenia-kl.ii.xls, a następnie zmienić jego nazwę na imię i nazwisko ucznia

Materiały do laboratorium MS ACCESS BASIC

M a k r a i d o d a t k o w e f o r m a n t y

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

INSTRUKCJA SKOKU GOTO

VBA praca z makrami w Excelu

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

GRID LAYOUT. Waldemar Korłub. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Visual Basic dla AutoCAD

Podstawy Programowania semestr drugi. Wykład czternasty

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

Instrukcja laboratoryjna nr.4

Aplikacje w środowisku VBA. Visual Basic for Aplications

Programowanie dynamiczne

Dostosowanie szerokości kolumn

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Języki formalne i techniki translacji

VBA praca z makrami w Excelu: piszemy kod! Ulepszamy program! 0. Parę uwag o samym edytorze

Laboratorium Programowania Kart Elektronicznych

BIBLIOTEKA NUMPY, CZĘŚĆ 1

FORMUŁY AUTOSUMOWANIE SUMA

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

4.2. Ustawienia programu

Działki Przygotowanie organizacyjne

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Zapytania i wstawianie etykiet z bazy danych do rysunku

Laboratorium 7 Blog: dodawanie i edycja wpisów

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wykonywanie działań matematycznych.

Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Aplikacja MDI. Rysunek 1. Tworzenie nowego projektu

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

ECDL/ICDL Zaawansowane przetwarzanie tekstów Moduł A1 Sylabus, wersja 2.0

Podstawy Programowania 2

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Podstawy informatyki

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Faktura VAT przygotowanie szablonu 1. Proszę wprowadzić następujące dane w odpowiednich komórkach arkusza:

Zmienne i struktury dynamiczne

Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy.

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

SPORZĄDZENIE WARIANTÓW ROZMIESZCZENIA ELEMENTÓW W ZAMKNIĘTEJ PRZESTRZENI DLA ZADANYCH KRYTERIÓW ICH LOKALIZACJI

3.4. Opis konfiguracji layoutów.

2. Tworzenie tabeli przestawnej. W pierwszym oknie dialogowym kreatora określamy źródło danych, które mamy zamiar analizować.

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Transkrypt:

01 grid tablica grid Zadanie Wykonajmy aplikację posiadającą dwa obiekty DataGridView. Jeden o nazwie DataGridView1, będzie formularzem wejściowym, drugi o nazwie DataGridView2 będziemy używać jako element wyjściowy do wyświetlania tabeli z wynikami. Obiekt DataGridView (podczas działania aplikacji tzw. runtime) automatycznie dodaje kolejne wiersze wtedy gdy rozpoczniemy wpisywanie danych do bieżąco ostatniego wiersza edycyjnego budowana aplikacja nie wymaga zatem specjalnego narzędzia (przycisku) pozwalającego dodawać wiersze. Natomiast dodawanie kolumny podczas działania programu nie przebiega automatycznie utworzymy zatem przycisk dodający kolejną kolumnę do DataGridView1, patrz kod poniżej. Więcej poleceń obsługujących obiekt DataGridView umieściłem w pliku: 01_gridview_skrot.pdf, https://www.simr.pw.edu.pl/~jbo/vb/vb_pracownia2013/01_gridview_skrot.pdf a skrót informacji o działaniach na tablicach w pliku: vb6.00_tablice_wstep.pdf https://www.simr.pw.edu.pl/~jbo/vb/vb_express2008/vb6.00_tablice_wstep.pdf. Z aplikacją będziemy pracować w następujący sposób. Przyciskiem [Grid do tabeli] będziemy zawartość komórek DataGridView1 umieszczać w tabeli(,). Odpowiednie działania będziemy wykonywali na tej właśnie tabeli i jeśli wynik będzie tego wymagał przetworzoną tabelę będziemy wyświetlać przyciskiem [Tabela do gridu] w obiekcie wyjściowym DataGridView2. Aby uprościć dostęp do tabeli ze wszystkich procedur zadeklarujemy ją: (1) poza procedurami, (2) w sposób dynamiczny. Ad 2: Dlaczego dynamicznie? Program, podczas działania, musi wiedzieć jaki jest rozmiar tabeli. Nie wiadomo jednak ile wierszy i ile kolumn kolejny użytkownik aplikacji będzie potrzebował. Zadeklarujemy zatem tabelę dynamicznie tzn, że będzie ona raz większa, a raz mniejsza, w zależności od potrzeb. Deklarację dynamiczną wykonamy w 4 krokach: 1. Deklaracja poza wszystkimi procedurami bez wskazywania wartości wymiarów tabeli: Public Class Form1 Dim tabela(,) As Single Dim Nwierszy, Nkolumn As Integer Jest to tabela o dwóch wymiarach (rozpoznajemy to po przecinku) ale nie znamy ich rozmiarów. 2. Sprawdzenie ile wierszy i ile kolumn ma mieć tabela (Uwaga. Elementy w tabeli numerujemy od zera. Oznacza to, że tabela posiadająca 5 wierszy i 10 kolumn powinna być zadeklarowana jako tabela(4, 9)). 'Odczytaj liczbę wierszy. Uwaga: licząc pierwszy wiersz (nagłówkowy) jako 1 LiczbaWierszyGridu = DataGridView1.RowCount Jeśli wypełnimy 4 wiersze w DatagridView1 uzyskamy LiczbaWierszyGridu = 5, bo policzony zostanie także wiersz nagłówka. Rozmiar wierszy tabeli Nwierszy będzie zatem: Nwierszy = LiczbaWierszyGridu 2 '(-1) bo w tabeli liczymy wiersze od 0 'i jeszcze (-1) bo był wiersz nagłówkowy, razem (-2). Dalej podobne działania wykonamy dla kolumn LiczbaKolumnGridu = DataGridView1.ColumnCount Nkolumn = LiczbaKolumnGridu 1 'bo w tabeli liczymy kolumny od 0 3. Deklaracja tablicy już z rozmiarami (ale UWAGA! Już bez wskazywania typu). ReDim tabela(nwierszy, Nkolumn) 4. Zapełnianie tablicy tabela(i, j) = CSng(DataGridView1.Item(j, i).value) ' Uwaga i,j a w Gridzie odwrotnie j, i Copyright 2017, mgr inż. Janusz Bonarowski 1

Pełny kod procedury przekładania wartości z DataGridView1 do tabeli Private Sub ButtonGridDoTabeli_Click(sender As Object, e As EventArgs) _ Handles ButtonGridDoTabeli.Click 'Przepisanie wartości z DatagridView do tabeli --------- Dim LiczbaWierszyGridu, LiczbaKolumnGridu As Integer LiczbaWierszyGridu = DataGridView1.RowCount Nwierszy = LiczbaWierszyGridu - 2 'bo liczymy wiersze od 0 LiczbaKolumnGridu = DataGridView1.ColumnCount Nkolumn = LiczbaKolumnGridu - 1 ReDim tabela(nwierszy, Nkolumn) tabela(i, j) = CSng(DataGridView1.Item(j, i).value) ' ---- **** MsgBox("Dane przeniesiono do tabeli") Przekładanie wartości z tabeli do DataGridView2 Private Sub ButtonTabelaDoGridu_Click(sender As Object, e As EventArgs) _ Handles ButtonTabelaDoGridu.Click 'Przepisanie danych z tabeli do DataGridView2 --------- ' Usunięcie wierszy DataGridView2.Rows.Clear() ' Dodanie wierszy do DatagridView2 DataGridView2.Rows.Add() ' Przełożenie wartości z tabeli do gridu DataGridView2.Item(j, i).value = tabela(i, j) 'DataGridView2.Item(j, i).value = Format(R(i, j), "0.0") Mnożenie każdego elementu tabeli przez 10 Private Sub ButtonElementyX10_Click(sender As Object, e As EventArgs) _ Handles ButtonElementyX10.Click 'Pomnożenie każdego elementu przez 10 tabela(i, j) = tabela(i, j) * 10 MsgBox("Mnożenie wykonane") Copyright 2017, mgr inż. Janusz Bonarowski 2

Pełny kod aplikacji Rysunek 1 Dim tabela(,) As Single Dim Nwierszy, Nkolumn As Integer 'Rozmiary tabeli Private Sub ButtonDodajKolumne_Click(sender As Object, e As EventArgs) Handles ButtonDodajKolumne.Click ' Dodanie kolumny do DataGridView1 o szerokości 50. ' ---------------------------------------------------- Dim NrKolumny As Integer NrKolumny = DataGridView1.ColumnCount DataGridView1.Columns.Add("Column" & (NrKolumny + 1), "Column" & (NrKolumny + 1)) DataGridView1.Columns(NrKolumny).Width = 50 DataGridView2.Columns.Add("Column" & (NrKolumny + 1), "Column" & (NrKolumny + 1)) DataGridView2.Columns(NrKolumny).Width = 50 Private Sub ButtonUsunKolumne_Click(sender As Object, e As EventArgs) Handles ButtonUsunKolumne.Click ' Usuwanie ostatniej kolumny ' -------------------------- Dim NrKolumny As Integer NrKolumny = DataGridView1.ColumnCount 'MsgBox(NrKolumny) DataGridView1.Columns.RemoveAt(NrKolumny - 1) DataGridView2.Columns.RemoveAt(NrKolumny - 1) Copyright 2017, mgr inż. Janusz Bonarowski 3

Private Sub ButtonGridDoTabeli_Click(sender As Object, e As EventArgs) Handles ButtonGridDoTabeli.Click ' Przepisanie wartości z DataGridView1 do tabeli ' --------------------------------------------- Dim LiczbaWierszyGridu, LiczbaKolumnGridu As Integer ' Odczytaj liczbę wierszy ' Uwaga: licząc pierwszy wiersz (nagłówkowy) jako 1 LiczbaWierszyGridu = DataGridView1.RowCount Nwierszy = LiczbaWierszyGridu 2 bo liczymy wiersze od 0 ' Odczytaj liczbę kolumn Uwaga: licząc pierwsza kolumnę jako 1 LiczbaKolumnGridu = DataGridView1.ColumnCount Nkolumn = LiczbaKolumnGridu 1 Ponowna, dynamiczna deklaracja tabeli (bez typu) ReDim tabela(nwierszy, Nkolumn) ' Zapełnianie tabeli z gridu. ' Uwaga. Do tabeli odwołujemy się tabela(wiersz, kolumna) ' do gridu odwołujemy się DataGridView(kolumna, wiersz) tabela(i, j) = CSng(DataGridView1.Item(j, I).Value) ' **** **** LabelUwaga.Text = "" MsgBox("Dane przeniesiono do tabeli") Private Sub ButtonTabelaDoGridu_Click(sender As Object, e As EventArgs) Handles ButtonTabelaDoGridu.Click ' Przepisanie danych z tabeli do DataGridView2 ' --------------------------------------------- ' (1) Usunięcie wszystkich wierszy (oprócz edycyjnego) DataGridView2.Rows.Clear() ' (2) Dodanie wierszy do DatagridView2 DataGridView2.Rows.Add() ' (3) Przełożenie wartości z tabeli do gridu DataGridView2.Item(j, i).value = tabela(i, j) 'DataGridView2.Item(j, i).value = Format(tabela(i, j), "0.0") Private Sub ButtonElementyX10_Click(sender As Object, e As EventArgs) Handles ButtonElementyX10.Click 'Pomnożenie każdego elementu przez 10 tabela(i, j) = tabela(i, j) * 10 MsgBox("Mnożenie wykonane, przepisz tabelę do Grid2") Copyright 2017, mgr inż. Janusz Bonarowski 4

Private Sub ButtonSumaGlownaprzekatna_Click(sender As Object, e As EventArgs) Handles ButtonSumaGlownaprzekatna.Click 'Suma elementów na głównej przekątnej suma = 0 suma = suma + tabela(i, i) TextBoxSumaNaGlownej.Text = CStr(suma) Private Sub ButtonSumaNaDrugiejPrzekatnej_Click(sender As Object, e As EventArgs) Handles ButtonSumaNaDrugiejPrzekatnej.Click 'Suma elementów na drugiej przekątnej suma = suma + tabela(i, Nkolumn - i) TextBoxSumaNaDrugiej.Text = CStr(suma) Private Sub ButtonSumaWkolumnie_Click(sender As Object, e As EventArgs) Handles ButtonSumaWkolumnie.Click ' Suma elementów we wskazanej kolumnie. ' ------------------------------------- ' nrkolumny - liczone od 1 Dim nrkolumny As Integer nrkolumny = CInt(TextBoxNrKolumny.Text) suma = 0 suma = suma + tabela(i, nrkolumny - 1) TextBoxSumaWkolumnie.Text = CStr(suma) Private Sub ButtonNajwiekszyElement_Click(sender As Object, e As EventArgs) Handles ButtonNajwiekszyElement.Click ' Największy element w DatagridView1 ' ---------------------------------- Dim najwiekszy As Single Dim iw, ik As Integer 'indeksy w Gridzie ' (1) Zakładamy, że tabela(0,0) to max najwiekszy = tabela(0, 0) iw = 0 ik = 0 If najwiekszy < tabela(i, j) Then najwiekszy = tabela(i, j) iw = i ik = j End If TextBoxMax.Text = CStr(najwiekszy) TextBoxIndeksy.Text = "Grid(" & (iw + 1) & ", " & (ik + 1) & ")" Copyright 2017, mgr inż. Janusz Bonarowski 5

Private Sub ButtonSumaPodGlowna_Click(sender As Object, e As EventArgs) Handles ButtonSumaPodGlowna.Click ' Suma pod główną przekątną ' ------------------------- If i > j Then suma = suma + tabela(i, j) End If TextBoxSumaPodGlowna.Text = CStr(suma) Private Sub ButtonSumaPodDruga_Click(sender As Object, e As EventArgs) Handles ButtonSumaPodDruga.Click ' Suma elementów pod drugą przekątną ' ---------------------------------- For j = Nkolumn To Nkolumn - i + 1 Step -1 'MsgBox("tabela(" & i & "," & j & ")=" & tabela(i, j)) suma = suma + tabela(i, j) TextBoxSumaPodDruga.Text = CStr(suma) Private Sub ButtonSumaDodatnich_Click(sender As Object, e As EventArgs) Handles ButtonSumaDodatnich.Click ' Suma wszystkich elementów dodatnich ' ----------------------------------- If tabela(i, j) > 0 Then suma = suma + tabela(i, j) End If TextBoxSumaDodatnich.Text = CStr(suma) Private Sub DataGridView1_CellValueChanged (sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged ' Przypomnienie o przepisaniu do tabeli ' ------------------------------------- LabelUwaga.Text = "Pamiętaj o przepisaniu danych do tabeli!" Copyright 2017, mgr inż. Janusz Bonarowski 6