Projektowanie i programowanie aplikacji biznesowych. Wykład 2



Podobne dokumenty
IFiZR Laboratorium 5 Info

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bazy danych Access KWERENDY

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

NAGŁÓWKI, STOPKI, PODZIAŁY WIERSZA I STRONY, WCIĘCIA

MS Access formularze

1. Przypisy, indeks i spisy.

Język SQL, zajęcia nr 1

Wykład III. dr Artur Bartoszewski Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

Podstawy technologii WWW

Certyfikat Certum Basic ID. Instrukcja dla użytkowników Windows Vista. wersja 1.3 UNIZETO TECHNOLOGIES SA

KASK by CTI. Instrukcja

Instrukcja dla użytkowników Windows Vista Certyfikat Certum Basic ID

Tworzenie szablonów użytkownika

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Instalacja i obsługa aplikacji MAC Diagnoza EW

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Jak zaimportować bazę do system SARE

Bazy danych Karta pracy 1

PODSTAWOWE POJĘCIA BAZ DANYCH

Formularze w programie Word

MODUŁ INTEGRUJĄCY ELEKTRONICZNEGO NADAWCĘ Z WF-MAG SPIS TREŚCI

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

NAGŁÓWKI, STOPKI, PODZIAŁY WIERSZA I STRONY, WCIĘCIA

WTYCZKA FARA-TCM Dane techniczne dla twórców zewnętrznych aplikacji do obsługi map cmentarza

I. Interfejs użytkownika.

Instrukcja do programu Przypominacz 1.5

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Obsługa aplikacji Walne Zgromadzenia. Instrukcja użytkownika. wersja 6.1

Instrukcja do programu Przypominacz 1.6

Wykład 5: PHP: praca z bazą danych MySQL

BAZY DANYCH Panel sterujący

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Oprogramowanie Użytkowe ćwiczenia Semestr I mgr inż. Daniel Riabcew SWSPiZ

BAZY DANYCH Formularze i raporty

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

1. Właściwości kosztorysu Współczynniki i narzuty dla kosztorysu

emszmal 3: Eksport wyciągów do Insert (Su\Re\Ra\Gr) nexo (plugin dostępny wraz z dodatkiem Biznes)

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

FlowSoft02. Przeznaczenie programu

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Bazy danych - wykład wstępny

SUPLEMENT DO DYPLOMU

Wykład 4. SQL praca z tabelami 1

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Program Opakowania zwrotne dla InsERT GT.

Rozwiązanie ćwiczenia 8a

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków:

Wypożyczalnia by CTI. Instrukcja

Instrukcja obsługi programu Do-Exp

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Instrukcja obsługi aplikacji MobileRaks 1.0

Stosowanie, tworzenie i modyfikowanie stylów.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Opis aktualizacji programu Kancelaria Komornika

Instrukcja obsługi. Helpdesk. Styczeń 2018

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Karty pracy. Ustawienia. W tym rozdziale została opisana konfiguracja modułu CRM Karty pracy oraz widoki i funkcje w nim dostępne.

APLIKACJA SHAREPOINT

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

1. Zarządzanie informacją w programie Access

Bazy danych Access KWERENDY

Telesprzedaż by CTI Instrukcja

AZACO Eksporter. Instrukcja konfiguracji oraz automatycznego eksportu danych. Przygotowanie środowiska...2. Konfiguracja zadań eksportu danych...

Temat: Organizacja skoroszytów i arkuszy

Projektowanie i programowanie aplikacji biznesowych. wykład 1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Tworzenie bazy danych na przykładzie Access

Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości

OPIS LOGOWANIA DO SYSTEMU MOODLE

Joyce Cox Joan Lambert. Microsoft Access Krok po kroku. Przekład: Jakub Niedźwiedź

Kwerenda. parametryczna, z polem wyliczeniowym, krzyżowa

Obsługa pakietu biurowego OFFICE

Bazy danych. Polecenia SQL

Rozpoczynamy import Kreator uruchamiamy przyciskiem Z tekstu, znajdującym się na karcie Dane, w grupie Dane zewnętrzne.

TWORZENIE FORMULARZY WORD 2007

Instrukcja obsługi DHL KONWERTER 1.6

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

Instrukcja logowania i realizacji podstawowych transakcji w systemie bankowości internetowej dla klientów biznesowych BusinessPro.

Praca w programie dodawanie pisma.

Kancelaria zmiany w programie styczeń 2009

PTI S1 Tabele. Tabele. Tabele

Spis treści. 1. Logowanie. 2. Strona startowa. 3. Moje dane. 4. Towary. 5. Zamówienia. 6. Promocje

Wypełnianie protokołów systemie USOSweb

Wysyłka dokumentacji serwisowej z Sekafi3 SQL do producentów.

Ewidencja Opłat za Korzystanie ze Środowiska

Instalacja i obsługa aplikacji MAC Diagnoza EP w celu wykonania Arkusza obserwacji


Integracja systemu trigocms! z platformą Facebook

Część 3 - Konfiguracja

NOWY SZABLON IMPORTU PLIKÓW

Transkrypt:

Projektowanie i programowanie aplikacji biznesowych Wykład 2

Kontrolki w Windows API Aby korzystać z kontrolek należy dołączyć plik nagłówkowy o nazwie commctrl.h oraz bibliotekę o nazwie libcomctl32.a. Kontrolki dla danego okna tworzy się (zazwyczaj) za pośrednictwem komunikatu WM_CREATE, który jest wysyłany po utworzeniu okna, dzięki czemu zaraz po utworzeniu okna, tworzone są kontrolki na tym oknie. Kontrolki to po prostu takie "małe" okienka, które wchodzą w skład "dużego" okna macierzystego. Tak samo jak "zwykłe" okna, kontrolki tworzymy więc funkcjami CreateWindow oraz CreateWindowEx. Na przykład tworząc przycisk wpisujemy "BUTTON". Pozostałe klasy, których możemy użyć, to m.in.: COMBOBOX, EDIT, LISTBOX, SCROLLBAR, STATIC.

Parę słów o polu edycji (kontrolka Edit) Na początku należy dołączyć plik nagłówkowy o nazwie commctrl.h, a w opcjach projektu bibliotekę libcomclt32.a. Samą kontrolkę tworzy się za pośrednictwem funkcji CreateWindowEx. #include <windows.h> #include <commctrl.h> HWND hedit1; int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow ) { wc.lpszclassname = NazwaKlasy; HWND hwnd=createwindowex( WS_EX_CLIENTEDGE, NazwaKlasy, "SQLite w praktyce", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 900, 700, NULL, NULL, hinstance, NULL ); hedit1 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD WS_VISIBLE WS_BORDER, 10, 20, 860, 30, hwnd, NULL, hinstance, NULL ); }

Obsługa tekstu w kontrolce Funkcją GetWindowText() pobiera tekst z kontrolki do łańcucha znaków. int GetWindowText(HWND hwnd, LPSTR lpstr, int size) gdzie: HWND hwnd - to uchwyt do kontrolki, z której pobieamy tekst, LPSTR lpstr - to wskaźnik do łańcucha znaków, do którego zostanie zapisany tekst z kontrolki, INT size - określa ile znaków ma zostać przepisane do łańcucha znaków. Jeżeli funkcja się nie powiedzie, zwraca 0, natomiast jeżeli wszystko pójdzie ok, zwraca długość odczytanego tekstu. Funkcja SetWindowText() służy do wstawiania tekstu do kontrolek. BOOL SetWindowText(HWND hwnd, LPCSTR lpstr) gdzie: HWND hwnd to uchwyt kontrolki, do której ma zostać zapisany tekst, LPCSTR lpstr - to wskaźnik do łańcucha znaków, który zostanie zapisany w kontrolce. Jeżeli funkcja się nie powiedzie zwraca 0, jeżeli tak zwraca 1.

Style kontrolki Edit ES_MULTILINE - powoduje, że kontrolka jest "wieloliniowa, ES_LEFT - tekst w kontrolce będzie wyrównywany do lewej strony (wartość domyślna), ES_RIGHT - tekst w kontrolce będzie wyrównywany do prawej strony, ES_CENTER - tekst będzie umieszczany na środku linii, ES_HSCROLL - powoduje, że gdy wyjdziemy poza obszar kontrolki w poziomie podczas pisania, widok tekstu w kontrolce automatycznie będzie się przesuwał (działa tylko z ES_MULTILINE), ES_VSCROL - powoduje, że gdy wyjdziemy poza obszar kontrolki w pionie podczas pisania, widok tekstu w kontrolce automatycznie będzie się przesuwał (działa tylko z ES_MULTILINE), WS_AUTOHSCROLL - powoduje pojawienie się paska przewijania na dole kontrolki (działa tylko z ES_MULTILINE), WS_AUTOVSCROL - powoduje pojawienie się paska przewijania z prawej strony kontrolki (działa tylko z ES_MULTILINE), ES_READONLY - styl ten blokuje pisanie w kontrolce przez użytkownika. Kontrolka nadaje się tylko do odczytu, ES_PASSWORD - styl ten używamy do wpisywania haseł, powoduje, że zamiast liter pojawiają się gwiazdki(kropki).

Kontrolka Combobox czyli pole, które po naciśnięciu rozwija listę wyboru(opcji). HWND hcb1; hcb1 = CreateWindowEx(WS_EX_CLIENTEDGE, "COMBOBOX", NULL, WS_CHILD WS_VISIBLE WS_BORDER CBS_DROPDOWNLIST, 45, 55, 120, 200, hwnd, NULL, hinstance, NULL); Zamiast "COMBOBOX" można zastosować WC_COMBOBOX. Styl CBS_DROPDOWNLIST blokuje możliwość wpisania własnego tekstu co umożliwia styl CBS_DROPDOWN. Listę wyboru możliwych opcji możemy wypełnić poprzez komunikat CB_ADDSTRING wysyłany do ComboBox'a. SendMessage(hCB1, CB_ADDSTRING, 0, (LPARAM) "Treść 1"); SendMessage(hCB1, CB_ADDSTRING, 0, (LPARAM) "Treść 2"); Aby ustawić daną opcję jako aktywną (aktualnie wybraną) należy do kontrolki wysłać komunikat CB_SETCURSEL za pośrednictwem funkcji SendMessage: SendMessage(hCB1, CB_SETCURSEL, (WPARAM)0, 0) gdzie jako trzeci parametr podajemy numer opcji wyboru, liczony od 0 w górę, który stanie się aktywny(wybrany). Aby sprawdzić jaka opcja jest aktualnie wybrana, należy wysłać do kontrolki komunikat CB_GETCURSEL. int index=sendmessage(hcb1, CB_GETCURSEL, 0, 0) Wartość index przyjmie numer aktualnie wybranej opcji (liczonej od 0).

Kontrolki w Windows API - w praktyce Przykład Założenia: realizacja programu w WINAPI, w ramach którego użytkownik będzie mógł wprowadzać dane do dwóch następujących baz (tabel) danych (utworzonych w programie SQLLiteStudio): - Tabela grupa id_grupy (varchar(15), klucz główny), data_utworzenia (date, nie NULL), Wydzial (varchar(10), nie NULL ), Kierunek (varchar(10), nie NULL ), Starosta (integer, nie NULL, domyślna wartość 0) - Tabela student nr_indeksu (integer, klucz główny), nazwisko (varchar(20), nie NULL ), imie (varchar(20), nie NULL ), id_grupy (varchar(15), klucz obcy -> grupa.id_grupy), data_urodzenia (date), SWPE (real, nie NULL, domyślna wartość 0) Ponadto zakłada się ograniczenie możliwości błędnego wprowadzenia danych poprzez stworzenie list zawierających możliwe wartości dla pól Wydzial i Kierunek (z pliku tekstowego) oraz pola id_grupy (lista zawierająca wartości pola grupa.id_grupy).

Utworzenie tabeli grupa

Utworzenie tabeli student

Zdefiniowanie klucza obcego

W specyfikacji założono, że dane dla pól Wydzial i Kierunek wprowadzone zostaną za pośrednictwem pliku tekstowego. W prezentowanym przykładzie do wprowadzenia danych do baz zastosowano kontrolki Edit oraz ComboBox (styl CBS_DROPDOWNLIST czyli bez możliwości wprowadzania własnych danych ). Ponadto w celach weryfikacyjnych postanowiono uwzględnić możliwość realizacji zapytań SQL, które wprowadza się za pośrednictwem kontrolki Edit (styl ES_MULTILINE) a wyniki zapytań wyświetlane są w kontrolce ListBox.

Deklaracja uchwytów do kontrolek oraz funkcji zastosowanych w programie.

Tworzenie kontrolek (wybranych) Funkcje realizujące pobieranie danych wpisywanych do kontrolek (Edit ow i ComboBox ów).

Fragment obsługujący zdarzenie naciśnięcia przycisku Button1, w ramach którego realizowane jest zapytanie SQL. Wypełnienie opcji w ComboBox ach na podstawie danych zawartych w pliku tekstowym. Czyszczenie całych listy wyboru ComboBox a hcb1 zrealizowano następująco: SendMessage( hcb1, CB_RESETCONTENT, 0,0 ) a dopisywanie wartości (wartosc -> string odczytany z pliku tekstowego): SendMessage(hCB1, CB_ADDSTRING, 0, (LPARAM) wartosc.c_str())

Funkcje (wyniksql, wpiszcb3) wykonywane n-krotnie, gdzie n jest liczbą rekordów jakie generuje zapytanie SQL (w ramach funkcji sqlite3_exec). Pod l_kolumn kryje się liczba kolumn jakie zwraca zapytanie natomiast nazwy kolumn i przypisane do nich wartości przechowują zmienne wskaźnikowe wartosci oraz nazwa_kolumny. Funkcja wpiszcb3 realizuje wypełnienie listy wyboru ComboBox a hcb3 zawierającego elementy grupa.id_grupy.

Obsługa zdarzenia naciśnięcia przycisku hbutton3, w ramach którego następuje wprowadzenie danych do tabeli grupa.

Obsługa zdarzenia naciśnięcia przycisku hbutton4, w ramach którego następuje wprowadzenie danych do tabeli student. W prezentowanym kodzie (programie) nie uwzględniono m.in. sprawdzenia czy wszystkie dane zostały wprowadzone jednak sposób realizowania tego elementu powoduje, że brak jakiejkolwiek danej wygeneruje błąd zapytania SQL o czym użytkownik zostanie poinformowany. Poza tym nie zostały uwzględnione niuanse związanie z niektórymi polami (np. pole Starosta, do którego w założeniu powinno wprowadzić numer indeksu studenta pełniącego funkcje starosty w danej grupie).

Wprowadzenie danych opcji wyboru następuje poprzez naciśnięcie przycisku Aktualizuj listy CB

Błąd wpisu danych do tabeli grupa brak wartości w polu starosta.

Modyfikacja umożliwiająca niewprowadzanie danych do pola Starosta (teoretycznie można nie podawać wartości 0 ponieważ na etapie tworzenia tabeli grupa określono wartość domyślną dla tego pola).

Modyfikacja pola (hedit1), za pomocą którego użytkownik realizuje zapytania SQL.

Modyfikacja zawartości pola grupa.starosta. Brak sprecyzowanego warunku spowodował przypisanie jednej wartości (213131) do wszystkich rekordów.

Aktualizacja danych w tabeli grupa.

Zastosowanie funkcji sqlite3_get_table ( łatwiejsza metoda dostępu do danych zawartych w tabelach alternatywa wobec sqlite3_exec).

Efekt realizowania zapytania SQL za pośrednictwem funkcji sqlite_get_table (nazwy kolumn w pierwszym wierszu ). Kolejnym krokiem (usprawnieniem) programu jest uwzględnienie możliwości eksportowania i importowania danych (np. z pliku) oraz możliwości edycji poszczególnych rekordów poprzez modyfikowanie zawartości kontrolek (do realizacji ;)).