mvb w ms office.pdf

(399 KB) Pobierz
Podstawy programowania RAD z u¿yciem narzêdzi Borland Delphi/C++ Builder
Microsoft Visual Basic
Projektowanie RAD w VB
Wspłpraca VB i Microsoft Office
Ćwiczenia
Toruń, 6 września 2002
Najnowsza wersja tego dokumentu znajduje się pod adresem
Źrdła opisanych w tym dokumencie programw znajdują się pod adresem
1
I. Spis treści
2
II. Od Delphi do Visual Basica
Celem tego rozdziału nie jest gruntowne uczenie Visual Basica. Nie jest nim rwnież nauka programowania
RAD. Cel jest znacznie skromniejszy, a mianowicie uświadomienie programistom znającym Borland C++
Buildera lub Delphi, że umieją także pisać aplikację za pomocą Microsoft Visual Basica (o ile znają BASIC, ale
to nie jest też warunek konieczny, tak jak nie jest konieczna gruntowna znajomość C++ do programowania RAD
w Builderze).
Dokument składa się w istocie z przykładw, ktrych pomysły są zaczerpnięte z Podstaw programowania RAD
1. Podobieństwa áOCX RADÑ i áVCL RADÑ
Po uruchomieniu Visual Basica mamy możliwość wyboru typu aplikacji, ktrą chcemy tworzyć Î początkowo
będzie to zawsze áStandard EXEÑ.
Uwaga! W przeciwieństwie do Delphi nie wystarczy wybrać kontrolkę i kliknąć na formę. Aby skutecznie
umieścić ją na formie trzeba przeciągnąć myszką zaznaczając obszar, ktry ma zajmować. Można rwnież
kliknąć dwukrotnie kontrolkę na panelu.
Uwaga! Przełączanie między projektem formy i edytorem kodu możliwe jest w Visual Basicu z poziomu
klawiatury za pomocą (F7 i Shift+F7).
Label: Dodać do projektu formy kontrolkę Label1 i edytować jego własności (Caption, Caption z accel char np.
& Z amknij, ForeColor, Font, Visible). Zmiana własności Label1 podczas działania programu.
CommandButton: Analogicznie umieścić na formie Command1 i edytować własności oraz metodę
zdarzeniową związaną ze zdarzeniem Click. Napisać procedurę zdarzeniową zamykającą aplikację (przez
zamknięcie formy głwnej poleceniem UnLoad Me Î Me jest odpowiednikiem this w C++ i Self w Delphi,
czyli jest wskaźnikiem do bieżącego obiektu). Z kolei UnLoad jest odpowiednikiem free w C++.
2. Image i CommonDialog (ShowOpen)
W Visual Basicu wszystkie okna dialogowe schowane są w kontrolce CommonDialog, ktra standardowo nie
jest udostępniona w Projekcie. Typ okna zależy od metody, ktrą wywołamy do pokazania okna (ShowOpen,
ShowSave, ShowColor, ShowFont itp.) Aby udostępnić ten komponent w bieżącym projekcie należy w Project,
Components ... zaznaczyć pozycję Microsoft Common Dialog Control 6.0 , a na panelu kontrolek pojawi się
ikona CommonDialog. Komponent ten jest interfacem do biblioteki commdlg.dll znajdującej się w katalogu
systemowym Windows.
W przeciwieństwie do Delphi/C++ Buildera LoadPicture nie jest własnością Image1.Picture, a jest áoglnąÑ
funkcją Visual Basica. Na formie umieszczamy Image, CommonDialog i CommandButton. Naszym celem jest
napisanie prostej aplikacji, ktra umożliwi użytkownikowi wybr nazwy obrazka po naciśnięciu klawisza i
załadowanie go do Image1.Picture. W przedstawionej poniżej procedurze zdarzeniowej (związanej z
Command1.Click) ignoruję możliwość sytuacji, w ktrej użytkownik naciska Anuluj w oknie dialogowym (opis
obsługi takiego zdarzenia znajduje się w następnym przykładzie).
Private Sub Command1_Click()
CommonDialog1.ShowOpen ' Wywolanie okna dialogowego
Image1.Picture = LoadPicture(CommonDialog1.FileName) 'Wczytanie obrazu
End Sub
W przeciwieństwie do Delphi/C++ Buildera Visual Basic obługuje pliki JPEG i GIF.
3
3. Notatnik (TextBox, CommonDialog.ShowFont, obsługa plikw, schowka)
Stworzymy aplikację pełniącą formę notesu, w ktrym (w bardzo ograniczonym zakresie) będziemy mogli
modyfikować sposb wyświetlania tekstu na ekranie. Wśrd standardowo dostępnych kontrolkach /
komponentach odpowiednikiem Borlandowskiego TMemo jest Text (ikona w drugim wierszu). Dokładniej rzecz
biorąc Text może pełnić funkcję zarwno TEdit jak i TMemo w zależności od ustawienia własności MultiLine .
W naszym przypadku należy umieścić ją na formie nadając odpowiednią wielkość. Następnie do formy dodajmy
przyciski, checkboxy i radioboxy podobnie jak na rysunku.
Komponentem, ktry jest nam potrzebny, ale domyślnie nie jest udostępniony, jest okno dialogowe wyboru
czcionek. Kryje się ono w kontrolce CommonDialog , ktrej metoda pozwala ShowFont wywołać potrzebne
nam okno.
W Text1 za pomocą okienka Properties ustalono opcję ScrollBars na rtBoth.
Zaznaczono też domyślny kolor czcionki OptionButton1.Value ustawiając na True.
Następnie będziemy kolejno oprogramowywali widoczne na formie komponenty kontroli.
a) áMożliwa edycjaÑ
Ten CheckBox ma kontrolować możliwość zmieniania przez użytkownika zawartości Text1.
Private Sub Check1_Click()
'w instrukcji przypisania pominieta jest opcjonalna instrukcja Let
Text1.Enabled = Check1.Value
End Sub
4
1411775.001.png
Check1.Value nie jest zmienną logiczną Î przyjmuje trzy możliwe wartości: 0 (vbUnchecked), 1 (vbChecked) i
2 (vbGrayed), ale podobnie jak w C++ konwersja z liczb naturalnych do wartości logicznej jest automatyczna.
b) áWybierz czcionkęÑ
Tym przyciskiem uruchomimy standardowe okno wyboru czcionki i jej stylu oraz zastosujemy nowo wybraną
czcionkę do sformatowania tekstu w oknie Text1 (podobnie jak w Delphi/C++ Builderze, aby stworzyć szkielet
domyślnej procedury reagującej na kliknięcie przycisku Î wystarczy dwukrotnie kliknąć na niego w projekcie.
Ponadto można wybrać obsługiwane zdarzenie w rozwijalnej liście na grze okna edycyjnego).
Private Sub Command1_Click()
'Obsluga nacisniecia Cancel - przejscie do konca procedury
CommonDialog1.CancelError = True
On Error GoTo NacisnietoCancel
'nalezy ustalic jakie typy czcionki maja byc widoczne dla okna
'dialogowego (cdlCFScreenFonts lub cdlCFPrinterFonts lub jak tu obie)
'inaczej pojawi sie komunikat bledu, informujący ze nie ma
'zainstalowanych czcionek;
'udostepniamy rowniez dodatkowe formatowania: cdlCFEffects
CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects
CommonDialog1.ShowFont
'przypisanie wybranej czcionki do Text1
'wykorzystano konstrukcje With analogicznie jak w Delphi
With Text1
.Font.Bold = CommonDialog1.FontBold
.Font.Name = CommonDialog1.FontName
.Font.Size = CommonDialog1.FontSize
.Font.Bold = CommonDialog1.FontBold
.Font.Italic = CommonDialog1.FontItalic
.Font.Underline = CommonDialog1.FontUnderline
.Font.Strikethrough = CommonDialog1.FontStrikethru
.ForeColor = CommonDialog1.Color
End With
'Wyjscie z procedury - zapobiega wykonaniu sekcji NacisnietoCancel
Exit Sub
'Czesc obslugujaca blad - nic nie robi
NacisnietoCancel:
End Sub
Aby sprawdzić czy użytkownik po wybraniu czcionki nacisnął OK czy Cancel należy włączyć własność
CancelError , ktra powoduje, ze naciśnięcie Cancel w oknie dialogowemu wywołuje błąd aplikacji.
Poleceniem On Error ustalamy reakcję na ten błąd Î komenda przejścia do końca etykiety NacisnietoCancel,
czyli do końca procedury i ominięcie w ten sposb przypisania czcionki do Text1.
c) áStyl czcionkiÑ
Ręczny wybr stylu czcionki Î w przeciwieństwie do TFont z VCL formatowania (Bold, Italic itd.) stanowią
oddzielne zmienne logiczne. Chcąc zmienić formatowanie czcionki nie modyfikujemy zbioru jak było w
obiekcie TFont w VCL, a jedynie ustawiamy wartość logiczną poszczeglnych własności.
Obsługa ComboBoxw zgrupowanych w Frame1 polegać więc będzie na ustawianiu wartości logicznej
odpowiednich własności Text1.Font zgodnie z wartością własności Value odpowiednich ComboBoxw:
Private Sub Check2_Click()
Text1.Font.Bold = Check2.Value
End Sub
5
Zgłoś jeśli naruszono regulamin