Zapraszam na stronę
z poezją Zosi Pągowskiej

Znajdziesz tam wiersze autorki oraz muzykę, napisaną do jej tekstów.
www.zopag.pl
19.02.2020
ŚRODA

(05) – Zapis ustawień aplikacji

Najprościej rzecz ujmując, serializacja jest procesem konwertowania obiektu na strumień bajtów, który można zapisać w oddzielnym pliku. Celem serializacji jest zapisanie stanu obiektu, aby w dowolnym momencie móc go odtworzyć. Proces odtwarzania obiektu ze strumienia bajtów nazywany jest deserializacją. A jak to wygląda w praktyce? Poniżej zamieszczam przykład najprostszej aplikacji pozwalającej na zapis ustawień koloru tła formy oraz tekstu, utworzonego w czasie działania aplikacji, w kontrolce RichTextBox. Po utworzeniu nowego projektu dodajemy na formę kontrolkę RichTextBox, Button oraz ColorDialog, a następnie dodajemy do projektu nową klasę. Dla przypomnienia, aby dodać nową klasę klikamy na pasku narzędziowym Project  i wybieramy: Add Class. Zmieniamy nazwę klasy na: Ustawienia. Teraz przed nazwą naszej klasy umieszczamy atrybut <Serializable()> , dzięki któremu będzie możliwy zapis oraz odczyt danych ze strumienia bajtów. Wnętrze klasy powinno wyglądać tak jak poniżej:

<Serializable()> Public Class Ustawienia

End Class

 

Nasz program ma umożliwiać zapis koloru tła formy oraz tekstu, tak więc do klasy musimy dodać odpowiednie zmienne, które pozwolą na zapis oraz odczyt tych danych. Gotowa klasa może wyglądać np. tak:

<Serializable()> Public Class Ustawienia

    ’Zmienne przechowujące kolor oraz tekst

    Private KolorTla As Color

    Private Tekst As String

    ’Konstruktor klasy

    Public Sub New()

    End Sub

    ’Zapis oraz odczyt wartości typu: kolor

    Public Property Kolor() As Color

        Get

            Return KolorTla

        End Get

        Set(ByVal value As Color)

            KolorTla = value

        End Set

    End Property

    ’Zapis oraz odczyt wartości typu: tekst

    Public Property Napis() As String

        Get

            Return Tekst

        End Get

        Set(ByVal value As String)

            Tekst = value

        End Set

    End Property

End Class

 

Teraz wróćmy do naszej formy. Dla prawidłowego działania aplikacji należy zaimportować dwie biblioteki: System.IO oraz System.Runtime.Serialization.Formatters.Binary Kolejnym etapem jest dodanie obsługi dwóch zdarzeń formy, które będą wywoływane przy jej starcie oraz zamykaniu. To właśnie tu będziemy wczytywać oraz zapisywać stan naszej aplikacji. Ostatnim elementem będzie dodanie możliwości zmiany koloru tła formy. Listing programu zamieszczam poniżej.

 

’Zaimportowanie dodatkowych bibliotek

Imports System.IO

Imports System.Runtime.Serialization.Formatters.Binary

Public Class Form1

    ’Start aplikacji

    Sub New()

        InitializeComponent()

        ’Deserializacja danych

        If File.Exists(„ustawienia.ust”) Then

            Dim plik As New FileStream(„ustawienia.ust”, FileMode.Open)

            Dim bf As New BinaryFormatter

            Dim konfig As Ustawienia = bf.Deserialize(plik)

            Me.BackColor = konfig.Kolor

            RichTextBox1.Text = konfig.Napis

            plik.Close()

        Else

            MsgBox(„Brak pliku ustawień użytkownika…”)

        End If

    End Sub

    ’Zamykanie aplikacji

    Private Sub Form1_FormClosed(sender As System.Object, e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed

        ’Serializacja danych

        Dim plik As New FileStream(„ustawienia.ust”, FileMode.Create)

        Dim bf As New BinaryFormatter

        Dim konfig As New Ustawienia

        konfig.Kolor = Me.BackColor

        konfig.Napis = RichTextBox1.Text

        bf.Serialize(plik, konfig)

        plik.Close()

    End Sub

    ’Zmiana koloru formy

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

        If ColorDialog1.ShowDialog Then

            Me.BackColor = ColorDialog1.Color

        End If

    End Sub

End Class

 

Przy pierwszym uruchomieniu program wyświetli komunikat: “Brak pliku ustawień użytkownika…”, ale po zamknięciu i ponownym uruchomieniu komunikat już się nie wyświetli, ponieważ w trakcie zamykania zostanie utworzony plik ustawień programu. Oczywiście nazwa oraz rozszerzenie pliku może być dowolna, ale sugeruję, aby jako rozszerzenie podać takie, które nie będzie powiązane z już istniejącym w naszym systemie.

Zdobytą w tej części kursu wiedzę możemy wykorzystać do rozbudowy aplikacji z poprzedniego kursu. Możemy np. rozbudować ją o zapis ustawień konta, z którego wysyłana będzie wiadomość e-mail. Jeżeli ktoś chciałby skorzystać z gotowca to poniżej znajdują się linki do kodu programu zapisanego w pliku tekstowym oraz gotowy program w postaci pliku *.exe  Aplikacja jest rozbudowanym programem  z poprzedniego odcinka kursu. Dodałem zapis ustawień parametrów naszego konta oraz możliwość dodawania nowych kontaktów. Oczywiście każdy nowo dodany kontakt będzie zapamiętany i przy kolejnym uruchomieniu programu będzie pojawiał się na liście kontaktów. Jednak zamiast ściągać gotowy program można spróbować we własnym zakresie rozbudować go o dodatkowe funkcje, do czego  bardzo zachęcam. Najciekawsze programy będą opublikowane na Forum.

Pobierz listing programu

Pobierz: Listingi
Pobrano: 180,
Rozmiar: 2.9 KB,
Data: 02.Kwi.2016

Pobierz program w wersji *.exe

Pobierz: Mail
Pobrano: 215,
Rozmiar: 40 KB,
Data: 02.Kwi.2016