ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Η Γλώσσα Προγραμματισμού Visual Basic

 

Μάθημα 1 - Τι Είναι η Visual Basic - Ιδιότητες και Μέθοδοι

Η Visual Basic είναι σήμερα η πιο δημοφιλής καθοδηγούμενη από συμβάντα (event driven language) γλώσσα οπτικού προγραμματισμού και συνδυάζει τα χαρακτηριστικά της γνωστής γλώσσας προγραμματισμού Basic για εύκολη εκμάθηση όπως επίσης και πληθώρα εντολών και συναρτήσεων για να ικανοποιήσει και τους πιο απαιτητικούς επαγγελματίες προγραμματιστές. Μπορεί να χρησιμοποιηθεί ακόμη και για δημιουργία εφαρμογών πολυμέσων όπως επίσης και για επεξεργασία αρχείων (βάσεων δεδομένων).

Οι εφαρμογές σε γραφικό περιβάλλον αποτελούνται από μια ή περισσότερες οθόνες με αντικείμενα (objects), όπως πλήκτρα εντολών, λίστες, πλαίσια κειμένου κ.ά., τα οποία ενεργοποιούνται από κάποιο συμβάν, όπως είναι το πάτημα ενός πλήκτρου από το πληκτρολόγιο ή από το ποντίκι.

Τα βήματα που πρέπει να ακολουθήσουμε για να δημιουργήσουμε μια εφαρμογή στην Visual Basic είναι τα εξής :

Στην Visual Basic δημιουργούμε ένα σύνολο από υποπρογράμματα (υπορουτίνες), όπου το καθένα απ' αυτά ανταποκρίνεται σε κάποια ενέργεια του χρήστη.

Μια ιδιότητα (property) είναι ένα συγκεκριμένο γνώρισμα ενός αντικειμένου που ορίζει τα χαρακτηριστικά του, όπως το μέγεθος, το χρώμα, τη θέση του κ.ά. Μια μέθοδος (method) είναι μια ενσωματωμένη διαδικασία, δηλ. ένα τμήμα κώδικα ή προγράμματος, που ενεργοποιείται για να προσδώσει ορισμένη ενέργεια σ' ένα αντικείμενο. Οι ιδιότητες περιγράφουν ένα αντικείμενο ενώ οι μέθοδοι τού επιτρέπουν να κάνει κάτι. Δηλαδή, οι ιδιότητες είναι δεδομένα ενώ οι μέθοδοι είναι κώδικας προγράμματος.

Η γενική σύνταξη για την απόδοση τιμής σε μια ιδιότητα είναι η εξής :

Object.Property = Setting

Ακολουθούν παραδείγματα :

frmMyForm.BackColor = QBColor(BLUE)

frmMyForm.BackColor = OldColor

 

Μάθημα 2 - Τα Παράθυρα της Visual Basic

Το περιβάλλον σχεδίασης της Visual Basic αποτελείται από ένα παράθυρο έργου (Project) και ένα παράθυρο ιδιοτήτων (Properties). Το πρώτο εμφανίζει όλα τα αρχεία που έχουν σχέση με το ενεργό έργο και το δεύτερο αναφέρεται στο τρέχον επιλεγμένο αντικείμενο και μας δίνει τη δυνατότητα να δούμε ή να αλλάξουμε τις ιδιότητες του επιλεγμένου αντικειμένου. Με την επιλογή άλλου αντικειμένου, αλλάζουν και οι ιδιότητες που εμφανίζονται στο παράθυρο αυτό.

 

Μάθημα 3 - Τα Χειριστήρια (Controls) της Visual Basic

Στα αντικείμενα (χειριστήρια) της Visual Basic μπορούμε να δώσουμε δικά μας χαρακτηριστικά ονόματα για να μπορούμε να ξεχωρίζουμε αμέσως το είδος του αντικειμένου, δηλ. αν είναι πλήκτρο εντολής ή ετικέτα κλπ, αλλά και τον ρόλο που θέλουμε να έχει στην εφαρμογή. Τα τρία πρώτα γράμματα (πρόθεμα) είναι συνήθως μικρά και χαρακτηρίζουν το είδος του αντικειμένου. Η Visual Basic δίνει μόνη της ονόματα στα χειριστήρια, όπως Form1, Command2 κλπ, τα οποία μπορούμε και πρέπει να διορθώσουμε. Ακολουθεί ένας πίνακας με τα συνήθη αντικείμενα της Visual Basic, τα προθέματά τους και μερικά χαρακτηριστικά παραδείγματα.

Αντικείμενο Πρόθεμα Παράδειγμα
Φόρμα (Form) frm frmFirst
Πλήκτρο Εντολής (Command Button) cmd, btn cmdExit, btnCloseWindow
Ετικέτα (Label) lbl lblOnomata
Πλαίσιο Κειμένου (Text Box) txt txtMessage01
Οριζόντια Μπάρα Κύλισης hsb hsbRate
Κατακόρυφη Μπάρα Κύλισης vsb vsbTime
Μενού (Menu) mnu mnuMainMenu
Πλήκτρο Επιλογής (Option Button) opt optCountry
Πλαίσιο Ελέγχου (Check Box) chk chkLanguage
Πλαίσιο Λίστας (List) lst lstColors
Σύνθετο Πλαίσιο (Combo Box) cbo cboYpalliloi

Τα πλήκτρα εντολής και οι φόρμες έχουν έναν τίτλο (caption) που εμφανίζεται στην οθόνη αλλά και ένα όνομα (name) που το χρησιμοποιούμε στον προγραμματισμό. Ο τίτλος και το όνομα μπορεί να έχουν διαφορετικές τιμές και πρέπει να έχουμε υπόψη μας ότι το όνομα θα πρέπει να έχει οπωσδήποτε λατινικούς χαρακτήρες και να είναι σύντομο, ενώ ο τίτλος καλό θα είναι να έχει ελληνικούς χαρακτήρες και να είναι δηλωτικός της χρήσης του αντικειμένου. Φυσικά δεν θα μπορούν δύο διαφορετικά αντικείμενα να έχουν το ίδιο όνομα ενώ θα μπορούν να έχουν τον ίδιο τίτλο.

 

Μάθημα 4 - Το Πρώτο Παράδειγμα σε Visual Basic

Ακολουθεί ένα πρώτο παράδειγμα σχεδίασης μιας φόρμας με δύο πλήκτρα εντολής, όπου το κλικ στο ένα πλήκτρο αλλάζει σταδιακά το χρώμα του φόντου της φόρμας, ενώ το κλικ στο άλλο πλήκτρο σχεδιάζει έναν κύκλο με τυχαία ακτίνα κάθε φορά. Κάνουμε τις αρχικές ρυθμίσεις στη φόρμα μας :

Αντικείμενο Ιδιότητα Τιμή
Φόρμα (Form) Name
Caption
frmFirstProgram
Η Πρώτη Εφαρμογή σε Visual Basic
Πλήκτρο Εντολής (Command Button) Name
Caption
cmdChangeColor
Αλλαγή του Χρώματος Φόντου της Φόρμας
Πλήκτρο Εντολής (Command Button) Name
Caption
cmdDrawCircle
Σχεδίαση Κύκλου με Τυχαία Ακτίνα

Για να μπορούμε τώρα να γράψουμε κάποιον κώδικα που να ανταποκρίνεται στο συμβάν κλικ (πάτημα, click) ενός πλήκτρου εντολής, κάνουμε διπλό κλικ πάνω στο πλήκτρο. Η Visual Basic εμφανίζει μόνη της την πρώτη και την τελευταία από τις εντολές του κώδικα που θα χρειαστούμε, δηλ. τις Private Sub και End Sub και ανάμεσα στις δύο αυτές εντολές γράφουμε τον εξής κώδικα για το πλήκτρο cmdChangeColor :

Private Sub
    Static TheColor
                   
'Δήλωση στατικής μεταβλητής
    TheColor = TheColor + 1
   
'Αύξηση της μεταβλητής κατά ένα
    TheColor = IIf(TheColor<15, TheColor, 1)   
'Έλεγχος της τιμής της μεταβλητής για το χρώμα φόντου ώστε να μην είναι > 15
    frmFirstProgram.BackColor = QBColor(TheColor)   
'Ορισμός χρώματος φόντου φόρμας

End Sub

Ό,τι περιέχεται μετά από τον χαρακτήρα της αποστρόφου (') θεωρείται σχόλιο (comment) από την Visual Basic και αγνοείται.

Στο παράθυρο κώδικα για το άλλο πλήκτρο εντολής cmdDrawCircle γράφουμε τον εξής κώδικα :

Private Sub
    frmFirstProgram.Circle(1000, 1000), Rnd * 1500
                   
'Σχεδίαση κύκλου μέσα στη φόρμα - Χρήση δύο συναρτήσεων
End Sub

Η συνάρτηση (μέθοδος, method) Circle είναι εσωτερική της Visual Basic και δέχεται τρεις αριθμούς σαν παραμέτρους, όπου οι δύο πρώτες ορίζουν τις συντεταγμένες του κέντρου του κύκλου που θα σχεδιασθεί και η τρίτη την ακτίνα του. Παρατηρούμε ότι ενώ το κέντρο του κύκλου επιλέξαμε να παραμένει σταθερό, η ακτίνα παράγεται κάθε φορά τυχαία με βάση τη γνωστή συνάρτηση Rnd και μπορεί να παίρνει τιμές από 1 έως και 1500.

 

Μάθημα 5 - Οι Μεταβλητές της Visual Basic

Τα ονόματα των μεταβλητών της Visual Basic μπορούν να έχουν μήκος έως 255 χαρακτήρες, πρέπει να αρχίζουν από γράμμα, να μην περιέχουν τον χαρακτήρα της τελείας και να μην χρησιμοποιούν κάποιες από τις δεσμευμένες λέξεις (reserved words) της Visual Basic, όπως είναι για παράδειγμα οι λέξεις Sub και Function. Ακόμη, η Visual Basic δεν ξεχωρίζει τους πεζούς από τους κεφαλαίους χαρακτήρες στα ονόματα των μεταβλητών.

Ακολουθεί ένας πίνακας με τους τύπους δεδομένων της Visual Basic, τα επιθέματα που είναι απαραίτητα σε μερικούς τύπους δεδομένων, το μέγεθος που καταλαμβάνουν στη μνήμη καθώς και το πεδίο τιμών τους.

Τύπος Δεδομένων Επίθεμα Μέγεθος Πεδίο Τιμών
Byte Κανένα 1 Byte 0 - 255
Boolean Κανένα 1 Byte Αληθής ή Ψευδής (True or Flase)
Integer % 2 Bytes -32.768 έως +32.767
Long Integer & 4 Bytes -2,14 δισ. έως +2,14 δισ.
Single ! 4 Bytes Πολύ μεγάλο
Double # 8 Bytes Πολύ μεγάλο
Currency @ 8 Bytes Πολύ μεγάλο
Date Κανένα 8 Bytes από 1/1/100 έως 31/12/9999
Object Κανένα 4 Bytes  
String $ Ανάλογα με τη χρήση έως 65.000 χαρακτήρες
Variant Κανένα Ανάλογα με τη χρήση  

Πρέπει να έχουμε υπόψη μας ότι οι τιμές τύπου ημερομηνίας (Date) περικλείονται από τα σύμβολα #, όπως για παράδειγμα #December 15, 2003# ή #17 Aug 02#.

Αν δεν ορίσουμε κάποιον τύπο δεδομένων στον κώδικά μας με τις εντολές Dim ή Static, η Visual Basic χρησιμοποιεί τον προκαθορισμένο τύπο Varian, με τον οποίο μπορούμε να έχουμε ευελιξία στον κώδικά μας, καθώς μπορεί να περιέχει αριθμούς, συμβολοσειρές (strings), ημερομηνίες ή και τις ειδικές τιμές Empty και Null. Η τιμή Empty σημαίνει ότι η μεταβλητή δεν έχει αρχική τιμή και είναι ίση με 0 ή με " ", ενώ η τιμή Null προσδιορίζει μια μεταβλητή που σκόπιμα δεν περιέχει δεδομένα.

Για να δώσουμε στην Visual Basic να καταλάβει τι είδους μεταβλητές σκοπεύουμε να χρησιμοποιήσουμε, υπάρχει ο έμμεσος τρόπος, δηλ. το να τοποθετήσουμε ένα επίθεμα στο όνομα της μεταβλητής, όπως :

NumberOfEmployees% = 40        'έμμεση δήλωση τύπου δεδομένων Integer

(αν δεν χρησιμοποιήσουμε επίθεμα, τότε θα ισχύει εξ ορισμού ο τύπος δεδομένων Variant)

ή ο άμεσος τρόπος με την πρόταση Dim στην αρχή του κώδικα :

Dim NumberOfTimes As Integer
Dim Misthos As Double
Dim Eponymo As String
Dim Onoma As String*20

Μπορούμε να ορίσουμε και πίνακες (arrays) ως εξής :

Dim A(10) As Integer                'πίνακας ακεραίων μίας διάστασης 10 θέσεων
Dim A(20, 20) As Integer          'πίνακας ακεραίων δύο διαστάσεων 20 Χ 20 θέσεων
Dim A(0 To 10, -1 To 9) As Integer          'πίνακας ακεραίων δύο διαστάσεων και με δείκτες 0 έως 10 και -1 έως 9, δηλ. 11 Χ 11 θέσεων

Στην Visual Basic υπάρχουν τέσσερα επίπεδα εμβέλειας των μεταβλητών :

Με την έμμεση δήλωση ή με την πρόταση Dim δηλώνουμε μια μεταβλητή σε επίπεδο διαδικασίας και η μεταβλητή είναι τοπική (local) μέσα στη διαδικασία, δηλ. δεν αναγνωρίζεται εκτός της διαδικασίας και δεν διατηρεί τις τιμές της ανάμεσα στις κλήσεις της διαδικασίας.

Με τη δήλωση Static μια μεταβλητή παραμένει τοπική μέσα στη διαδικασία όπου ορίζεται και δεν αναγνωρίζεται εκτός της διαδικασίας αλλά διατηρεί την τιμή της όταν επανέλθουμε στη διαδικασία (στατική).

Μια μεταβλητή επιπέδου φόρμας είναι διαθέσιμη σε κάθε διαδικασία αυτής της φόρμας και μια μεταβλητή επιπέδου ενότητας κώδικα είναι διαθέσιμη σε κάθε διαδικασία αυτής της ενότητας κώδικα. Για να δηλώσουμε μια μεταβλητή επιπέδου φόρμας, επιλέγουμε General από τη λίστα Object και πάμε στην περιοχή General Declarations. Για να δηλώσουμε μια μεταβλητή επιπέδου ενότητας κώδικα, επιλέγουμε Module από το μενού Insert.

Το ευρύτερο επίπεδο εμβέλειας είναι το καθολικό, όπου όλες οι διαδικασίες και οι συναρτήσεις έχουν πρόσβαση στις καθολικές μεταβλητές. Για να δηλώσουμε μια μεταβλητή σαν καθολική, χρησιμοποιούμε την πρόταση Global στην περιοχή δηλώσεων :

Global DirectorName As String
Global EuroRate As Double
Global Temperature As Single

Στη Visual Basic μπορούμε να ορίσουμε και δικούς μας τύπους δεδομένων, κάτι αντίστοιχο δηλαδή με την δήλωση Type της Pascal. Οι οριζόμενοι από τον χρήστη τύποι δεδομένων μπορούν να περιέχουν ένα ή περισσότερα στοιχεία των βασικών τύπων. Ορίζουμε έναν δικό μας τύπο δεδομένων στην περιοχή δηλώσεων μιας ενότητας κώδικα, χρησιμοποιώντας τις λέξεις κλειδιά Type και End Type, ως εξής :

Type EmpData
    ID As Long
    Name As String*30
    Salary As Currency
End Type

Με τη χρήση του τελεστή τελείας (.), μπορούμε να δώσουμε τιμές στις μεταβλητές αυτές, ως εξής :

Dim Employee As EmpData
Employee.ID = 1234
Employee.Name = "Jonh Papadopoulos"
Employee.Salary = 1500.00

 

Μάθημα 6 - Η Συνάρτηση MsgBox() και η Διαδικασία MsgBox

Οι συναρτήσεις MsgBox() και InputBox() και η διαδικασία MsgBox είναι ενσωματωμένες στη Visual Basic και μας δίνουν τη δυνατότητα για πολύ χρήσιμες λειτουργίες εισόδου/εξόδου δεδομένων μέσα από προκαθορισμένα πλαίσια διαλόγου.

Η συνάρτηση MsgBox() και η διαδικασία MsgBox εμφανίζουν ένα μήνυμα σ' ένα πλαίσιο διαλόγου και περιμένουν από τον χρήστη να πατήσει ένα πλήκτρο. Η συνάρτηση MsgBox() επιστρέφει μια ακέραια τιμή για να μπορούμε να γνωρίζουμε ποιο πλήκτρο πάτησε ο χρήστης, ενώ η διαδικασία MsgBox εμφανίζει απλά και μόνο ένα μήνυμα σ' ένα παράθυρο και δεν δέχεται επιλογή από τον χρήστη.

Η σύνταξή τους γίνεται ως εξής :

ReturnedValue% = MsgBox(μήνυμα, τύπος, τίτλος, βοηθητικό αρχείο, συμφραζόμενα)
MsgBox
μήνυμα, τύπος, τίτλος, βοηθητικό αρχείο, συμφραζόμενα

Το μήνυμα είναι ένα string που εμφανίζεται μέσα στο πλαίσιο διαλόγου, ενώ ο τίτλος είναι ένα string που εμφανίζεται στη μπάρα τίτλοτ του πλαισίου διαλόγου. Ο τύπος είναι ένας αριθμός και είναι ίσος με το άθροισμα των τιμών που καθορίζουν τον αριθμό και τον τύπο των πλήκτρων που εμφανίζονται στο πλαίσιο διαλόγου. Το όρισμα μήνυμα είναι το μόνο υποχρεωτικό να χρησιμοποιηθεί.

Ο παρακάτω πίνακας εμφανίζει τις τιμές που χρησιμοποιούνται για το όρισμα τύπος της συνάρτησης MsgBox() :

Τιμή Σημασία Συμβολική Σταθερά
0 Μόνο το πλήκτρο ΟΚ vbOKOnly
1 Τα πλήκτρα ΟΚ και Cancel vbOKCancel
2 Τα πλήκτρα Abort, Retry, Ignore vbAbortRetryIgnore
3 Τα πλήκτρα Yes, No, Cancel vbYesNoCancel
4 Τα πλήκτρα Yes, No vbYesNo
5 Τα πλήκτρα Retry, Cancel vbRetryCancel
16 Το εικονίδιο Critical vbCritical
32 Το εικονίδιο ? vbQuestion
48 Το εικονίδιο ! vbExclamation
64 Το εικονίδιο i vbInformation
0 Default είναι το 1ο πλήκτρο vbDefaultButton1
256 Default είναι το 2ο πλήκτρο vbDefaultButton2
512 Default είναι το 3ο πλήκτρο vbDefaultButton3
0 Λειτουργικότητα εφαρμογής vbApplicationModal
4096 Λειτουργικότητα συστήματος vbSystemModal

Οι τιμές χωρίζονται σε 4 ομάδες, όπου η πρώτη ομάδα (0-5) καθορίζει τον αριθμό και τον τύπο των πλήκτρων που θα εμφανισθούν στο πλαίσιο διαλόγου, η δεύτερη ομάδα (16-64) το στυλ του εικονιδίου, η τρίτη ομάδα το ποιο θα είναι το προκαθορισμένο (default) πλήκτρο και η τέταρτη ομάδα τη λειτουργικότητα του πλαισίου μηνύματος.

Από κάθε ομάδα επιλέγουμε έναν αριθμό και το συνολικό άθροισμα και των 4 αριθμών καθορίζει το είδος του πλαισίου διαλόγου που θέλουμε να εμφανισθεί. Για παράδειγμα, η τιμή 17 (1+16+0+0) εμφανίζει τα πλήκτρα ΟΚ και Cancel και το εικονίδιο Critical. Default είναι το πλήκτρο ΟΚ. Εξ ορισμού τιμή για το συνολικό άθροισμα είναι το 0, δηλ. εμφανίζεται μόνο το πλήκτρο ΟΚ, το οποίο είναι και Default. Αντί για αριθμούς, μπορούμε να χρησιμοποιήσουμε και τις συμβολικές σταθερές.

Η συνάρτηση τώρα MsgBox() επιστρέφει μια τιμή, η οποία καθορίζει το πλήκτρο που έχει επιλέξει ο χρήστης, σύμφωνα με τον παρακάτω πίνακα :

Τιμή Σημασία Συμβολική Σταθερά
1 Πατήθηκε το πλήκτρο ΟΚ vbOK
2 Πατήθηκε το πλήκτρο Cancel vbCancel
3 Πατήθηκε το πλήκτρο Abort vbAbort
4 Πατήθηκε το πλήκτρο Retry vbRetry
5 Πατήθηκε το πλήκτρο Ignore vbIgnore
6 Πατήθηκε το πλήκτρο Yes vbYes
7 Πατήθηκε το πλήκτρο No vbNo

Μπορούμε να χρησιμοποιήσουμε τις παραπάνω τιμές σε κώδικα προγράμματος, έτσι ώστε να κάνουμε ενέργειες ανάλογα με τις επιλογές του χρήστη.

 

Μάθημα 7 - Η Συνάρτηση InputBox()

Η συνάρτηση InputBox() εμφανίζει ένα πλαίσιο διαλόγου και περιμένει από τον χρήστη να γράψει κάποιο κείμενο ή να πατήσει ένα πλήκτρο και επιστρέφει τα περιεχόμενα του πλαισίου κειμένου. Η τιμή που επιστρέφει η συνάρτηση είναι τύπου Variant ή String, ανάλογα με τη σύνταξη που θα χρησιμοποιήσουμε :

ReturnedValue = InputBox(ενδείκτης, τίτλος, προκαθορισμένητιμή, xpos, ypos, βοηθητικό αρχείο, συμφραζόμενα)    'επιστρέφει τύπο Variant
ReturnedValue$ = InputBox
(ενδείκτης, τίτλος, προκαθορισμένητιμή, xpos, ypos, βοηθητικό αρχείο, συμφραζόμενα)   
'επιστρέφει τύπο String

Απ' όλα τα παραπάνω ορίσματα, το μόνο υποχρεωτικό είναι ο ενδείκτης. Ο ενδείκτης είναι ένα περιγραφικό κείμενο και εμφανίζεται δίπλα στο πλαίσιο κειμένου όπου θα καταχωρήσει ο χρήστης. Ο τίτλος είναι ένα κείμενο που εμφανίζεται στη μπάρα τίτλου του πλαισίου διαλόγου. Η προκαθορισμένητιμή είναι ένα String που εμφανίζεται στο πλαίσιο κειμένου και αποτελεί και την τιμή επιστροφής της συνάρτησης αν δεν καταχωρήσει τίποτα ο χρήστης. Τα ορίσματα xpos και ypos είναι αριθμοί που καθορίζουν την οριζόντια και την κατακόρυφη απόσταση από την πάνω αριστερή γωνία του πλαισίου διαλόγου έως την πάνω αριστερή γωνία της οθόνης. Αν τα παραλείψουμε και τα δύο, το πλαίσιο διαλόγου θα κεντραρισθεί οριζόντια.

Αν ο χρήστης επιλέξει το πλήκτρο ΟΚ ή πατήσει το πλήκτρο enter, η συνάρτηση InputBox() θα επιστρέψει το κείμενο που υπάρχει καταχωρημένο στο πλαίσιο κειμένου, ενώ αν ο χρήστης δεν καταχωρήσει κείμενο ή πατήσει το πλήκτρο Cancel, η συνάρτηση θα επιστρέψει ένα String μηδενικού μήκους (" ").

Ακολουθεί ένα παράδειγμα κώδικα με χρήση των συναρτήσεων MsgBox() και InputBox() και της διαδικασίας MsgBox :

Dim sName As String
sName = InputBox$(
"Δώστε Όνομα : ", "Η Συνάρτηση InputBox()")
If sName = "" Then
    MsgBox
"Δεν δώσατε κάποια τιμή!", vbCritical,
End If

...
Dim sMsg As String
Dim iRetVal As Integer
iRetVal = MsgBox(
"Καταχωρήσατε " & sName, 35, "Τιμή του sName")
If iRetVal = 6 Then
    sMsg =
"Πατήθηκε το Yes"
ElseIf iRetVal = 7 Then
    sMsg =
"Πατήθηκε το No"
ElseIf iRetVal = 2 Then
    sMsg =
"Πατήθηκε το Cancel"
End If
MsgBox sMsg, 64, "
Η Διαδικασία MsgBox"

 

Μάθημα 8 - Η Εντολή If ... End If

Η εντολή αυτή είναι γνωστή από άλλες γλώσσες προγραμματισμού και η σύνταξή της είναι απλή :

If bathmos < 10 Then
    Print Message1
Else
    Print Message2
EndIf

Μπορούμε να χρησιμοποιήσουμε και τη συνάρτηση του άμεσου If (Immediate If), την IIF(), η οποία επιστρέφει μια τιμή που μπορούμε να αποθηκεύσουμε σε μια μεταβλητή και δέχεται τρία ορίσματα : τη συνθήκη, την τιμή που θα επιστραφεί αν η συνθήκη είναι αληθής και την τιμή που θα επιστραφεί αν η συνθήκη είναι ψευδής.

Ακολουθεί ένα παράδειγμα :

a = IIF(a>=10, 0, a)

Η τιμή της μεταβλητής a θα παραμείνει η ίδια αν a<10, ενώ αν a>=10, θα γίνει ίση με 0.

 

Μάθημα 9 - Η Εντολή Select Case ... End Select

Με την ευέλικτη εντολή αυτή μπορούμε να επιλέξουμε να εκτελέσουμε μία ή περισσότερες εντολές από πολλές ομάδες εντολών, ανάλογα με την τιμή που θα έχει μια παράσταση. Η επιλογή Case Else εκτελείται όταν δεν ισχύει κάποια από τις υπάρχουσες συνθήκες. Ακολουθεί ένα παράδειγμα :

Select Case iAge
    Case 5
                   
'τιμή ακριβώς 5
        sCategory =
"Πέντε χρονών"
   
Case 13 To 19       
'τιμή μεταξύ 13 και 19
        sCategory =
"Έφηβος"
    Case 20 To 35, 50, 60 To 65   
'μία ακριβής τιμή και δύο περιοχές τιμών
        sCategory =
"Ενήλικας"
    Case Is > 65           
'τιμή μεγαλύτερη από 65
        sCategory =
"Πρεσβύτερος"

    Case Else
               
'ο,τιδήποτε άλλο
        sCategory = "Όλοι οι άλλοι"
End Select

 

Μάθημα 10 - Οι Δομές Βρόχων

Η Visual Basic διαθέτει τις εξής τρεις δομές βρόχων : While ... Wend, Do ... Loop και For ... Next.

Η σύνταξη της δομής While ... Wend έχει ως εξής :

While <συνθήκη>
    ... εντολές ...
Wend

Αν η <συνθήκη> είναι αληθής (true), θα εκτελεσθούν όλες οι εντολές που ακολουθούν μέχρι την εντολή Wend και ο έλεγχος θα επιστραφεί στην εντολή While για να ελεγχθεί και πάλι η <συνθήκη>. Όταν η <συνθήκη> γίνει ψευδής, το πρόγραμμα θα συνεχίσει με την εντολή που βρίσκεται μετά από την εντολή Wend.

Η δομή Do ... Loop μάς θυμίζει τη γνωστή δομή Repeat ... Until της Pascal και σύμφωνα μ' αυτήν, επαναλαμβάνεται ένα σύνολο εντολών όσο μια συνθήκη είναι ψευδής ή μέχρι η συνθήκη να γίνει αληθής. Με τη δομή αυτή μπορούμε να βγούμε από τον βρόχο οποιαδήποτε στιγμή, χωρίς να χρειασθεί να φθάσουμε στο τέλος του βρόχου. Έχει σημασία αν θα τοποθετήσουμε την εντολή Until του βρόχου στην αρχή ή στο τέλος.

Ακολουθούν παραδείγματα :

Do Until InputFile.EOF               'επανάληψη μέχρι να βρεθούμε στο τέλος του αρχείου
    Print InputFile("Name")
          
'εκτύπωση ενός πεδίου
    InputFile.MoveNext
       
         'μετάβαση στην επόμενη εγγραφή
Loop

Στο παράδειγμα αυτό επειδή η εντολή Until βρίσκεται αμέσως μετά την εντολή Do υπάρχει περίπτωση να μην μπούμε στον βρόχο αν η συνθήκη που ακολουθεί είναι αληθής. Ο βρόχος θα επαναλαμβάνεται όσο η συνθήκη είναι ψευδής.

Μια άλλη παραλλαγή της δομής Do ... Loop :

Do
    If InputFile("ID") = "999" Then
        Exit Do
    Else
        Print InputFile("Name")
    EndIF
    InputFile.MoveNext
              
 'μετάβαση στην επόμενη εγγραφή
Loop Until InputFile.EOF
       
 'επανάληψη μέχρι να βρεθούμε στο τέλος του αρχείου

Στο παράδειγμα αυτό ο βρόχος θα εκτελεσθεί μία τουλάχιστον φορά και αυτό γιατί ο έλεγχος της συνθήκης γίνεται στο τέλος του βρόχου και όχι στην αρχή. Η εντολή Exit Do μεταφέρει τον έλεγχο του προγράμματος στην εντολή που βρίσκεται αμέσως μετά τον βρόχο (πρόωρη έξοδος).

Με τη δομή For ... Next μπορούμε να επαναλάβουμε μια ομάδα εντολών συγκεκριμένες φορές, όπως ακριβώς γίνεται και σε άλλες γνωστές γλώσσες προγραμματισμού. Ακολουθούν παραδείγματα :

For i = 1 To 10        'Το Step=1 εξ ορισμού
   
Print InputFile("Name")           'εκτύπωση ενός πεδίου
    InputFile.MoveNext
       
         'μετάβαση στην επόμενη εγγραφή
Next

For i = 1 To 100 Step 5
   
Print i & "%"
Next

Υπάρχει και η εντολή Exit For για πρόωρη έξοδο από μια δομή For ... Next, κάτι ανάλογο δηλ. με την εντολή Exit Do που είδαμε νωρίτερα.

 

Μάθημα 11 - Οι Διαδικασίες (Procedures)

Μια Διαδικασία (Procedure) είναι ένα σύνολο από εντολές που μπορούμε να καλέσουμε αυτόνομα σ' ένα πρόγραμμα και εκτελεί κάποιες συγκεκριμένες εργασίες χωρίς όμως να επιστρέφει μια τιμή στο όνομά της. Μια διαδικασία ξεκινά με την εντολή Sub και τελειώνει με την εντολή End Sub. Μια διαδικασία μπορεί να περιέχει και κάποιες παραμέτρους για να μπορούμε να μεταβιβάσουμε τιμές και όταν την καλούμε για να εκτελεστούν οι εντολές της, γράφουμε το όνομά της και δίπλα τις παραμέτρους της χωρισμένες με κόμματα και όχι αναγκαστικά μέσα σε παρενθέσεις.

Ακολουθεί ένα παράδειγμα :

Sub Multiply (iFirstNumber As Integer, iSecondNumber As Integer)        'κεφαλίδα ορισμού της διαδικασίας
    iProduct = iFirstNumber * iSecondNumber
                                             
'υπολογίζει το γινόμενο δύο ακεραίων αριθμών
End Sub

Τρόπος κλήσης της διαδικασίας :

Multiply iUno, iDue

 

Μάθημα 12 - Οι Συναρτήσεις (Functions)

Μια Συνάρτηση (Function) είναι ένα σύνολο από εντολές που μπορούμε να καλέσουμε αυτόνομα σ' ένα πρόγραμμα και εκτελεί κάποιες συγκεκριμένες εργασίες αλλά και επιστρέφει μια τιμή στο όνομά της. Μια συνάρτηση ξεκινά με την εντολή Function και τελειώνει με την εντολή End Function . Μια συνάρτηση μπορεί να περιέχει και κάποιες παραμέτρους για να μπορούμε να μεταβιβάσουμε τιμές και όταν την καλούμε για να εκτελεστούν οι εντολές της, γράφουμε το όνομά της και δίπλα τις παραμέτρους της χωρισμένες με κόμματα και αναγκαστικά μέσα σε παρενθέσεις ακόμη κι όταν δεν υπάρχουν παράμετροι (ορίσματα).

Ακολουθεί ένα παράδειγμα :

Function Multiply (iFirstNumber As Integer, iSecondNumber As Integer) As Integer       'κεφαλίδα ορισμού της συνάρτησης
    Multiply = iFirstNumber * iSecondNumber
                                             
'υπολογίζει και επιστρέφει το γινόμενο δύο ακεραίων αριθμών
End
Function

Τρόπος κλήσης της συνάρτησης :

iProduct = Multiply(iUno, iDue)

Η Visual Basic διαθέτει μερικές πολύ χρήσιμες ενσωματωμένες συναρτήσεις :

Συνάρτηση Περιγραφή Παράδειγμα Τιμή Επιστροφής
Len() Μήκος μιας συμβολοσειράς (string) iLen = Len("Florina") 7
Mid() Ένα κομμάτι μιας συμβολοσειράς (string) Mid("Florina", 1, 3) "Flo"
Chr() Ο χαρακτήρας ascii ενός κωδικού sChar = Chr(65) "A"
Asc() Ο κωδικός ascii ενός χαρακτήρα iCode = Asc("A") 65
UCase() Μετατροπή σε κεφαλαία γράμματα sUp = UCase("Florina") "FLORINA"
LCase() Μετατροπή σε μικρά γράμματα sLow = LCase("Florina") "florina"
InStr() Εντοπίζει τη θέση σε μια συμβολοσειρά sSub = InStr("Florina", "r') 4

Οι παράμετροι στις διαδικασίες και τις συναρτήσεις της Visual Basic μεταβιβάζονται εξ ορισμού με αναφορά. Για να δηλώσουμε μεταβίβαση με τιμή χρησιμοποιούμε τη δεσμευμένη λέξη ByVal πριν από το όνομα της παραμέτρου στον ορισμό της υπορουτίνας, ενώ για να δηλώσουμε μεταβίβαση με αναφορά χρησιμοποιούμε τη δεσμευμένη λέξη ByRef πριν από το όνομα της παραμέτρου στον ορισμό της υπορουτίνας.

 

Μάθημα 13 - Οι Ετικέτες (Labels)

Μια Ετικέτα (Label) χρησιμοποιείται για να εμφανίζει ένα σταθερό κείμενο μέσα σε μια φόρμα, δηλ. ένα κείμενο που ο χρήστης δεν θα μπορεί να τροποποιήσει, όπως είναι ένας τίτλος σε μια φόρμα.Υπάρχει, όμως, η δυνατότητα να αλλάξει το κείμενο μιας ετικέτας με κώδικα προγράμματος σαν απόκριση σε κάποιο συμβάν (event). Οι ετικέτες μπορούν να χρησιμοποιηθούν και για να δηλώσουν τι θα πρέπει να καταχωρηθεί σ' ένα διπλανό αντικείμενο, όπως σ' ένα πλαίσιο κειμένου για παράδειγμα.

Οι σημαντικότερες ιδιότητες μιας ετικέτας είναι οι εξής :

Ιδιότητα Περιγραφή Παράδειγμα
Name (Όνομα) Το όνομα της ετικέτας που θα χρησιμοποιηθεί στον κώδικα προγράμματος lblPassword
Caption (Τίτλος) Το κείμενο που εμφανίζεται πάνω στην ετικέτα Δώστε τον κωδικό εισόδου
Appearance (Εμφάνιση) Μπορούμε να επιλέξουμε τρισδιάσταση ή επίπεδη εμφάνιση 1 = τρισδιάσταση
0 = επίπεδη
Alignment (Ευθυγράμμιση) Ευθυγραμμίζει τον τίτλο στα περιθώρια της ετικέτας 0 = αριστερά
2 = κέντρο
BorderStyle (Περίγραμμα) Καθορίζει τον τύπο του περιγράμματος 0 = κανένα περίγραμμα
1 = σταθερό μονό περίγραμμα
Font (Γραμματοσειρά) Μπορούμε να ορίσουμε τύπο και μέγεθος γραμματοσειράς UB Times, Bold, 13

 

Μάθημα 14 - Τα Πλαίσια Κειμένου (TextBoxes)

Με τα πλαίσια κειμένου μπορούμε να εμφανίσουμε κάποιες πληροφορίες αλλά και οι χρήστες της εφαρμογής θα έχουν τη δυνατότητα να καταχωρήσουν τιμές σ' αυτά. Το κείμενο που υπάρχει σ' ένα πλαίσιο κειμένου μπορούμε να το διαβάσουμε με την ιδιότητα Text.

Στο παρακάτω παράδειγμα κώδικα διαβάζουμε τα περιεχόμενα ενός πλαισίου κειμένου και μετά τα τροποποιούμε :

Dim sOldText, sNewText As String
sNewText =
"Φλώρινα"
sOldText = txtMyTextBox.Text
txtMyTextBox.Text = sNewText

Μπορούμε να παραλείψουμε την ιδιότητα Text ενός πλαισίου κειμένου καθώς είναι default και να του αποδώσουμε μια τιμή απευθείας με το όνομά του, αν και αυτό δεν αποτελεί καλή πρακτική.

sOldText = txtMyTextBox
txtMyTextBox = sNewText

Οι σημαντικότερες ιδιότητες ενός πλαισίου κειμένου είναι οι εξής :

Ιδιότητα Περιγραφή Παράδειγμα
Appearance (Εμφάνιση) Μπορούμε να επιλέξουμε τρισδιάσταση ή επίπεδη εμφάνιση 1 = τρισδιάσταση
0 = επίπεδη
BorderStyle (Περίγραμμα) Καθορίζει τον τύπο του περιγράμματος 0 = κανένα περίγραμμα
1 = σταθερό μονό περίγραμμα
Font (Γραμματοσειρά) Μπορούμε να ορίσουμε τύπο και μέγεθος γραμματοσειράς UB Times, Bold, 13
PasswordChar (Σύνθημα) Κρύβει το κείμενο και εμφανίζει * ή # Χρήση του * ή του #
SelStart (Αρχή επιλογής) Αρχική θέση επιλεγμένου κειμένου Μόνο κατά την εκτέλεση
SelLength (Τέλος επιλογής) Τελική θέση επιλεγμένου κειμένου Μόνο κατά την εκτέλεση
Tag (Ετικέτα) Αποθήκευση επιπλέον κρυφών πληροφοριών Συμβολοσειρά

Οι ιδιότητες SelStart και SelLength είναι διαθέσιμες μόνο κατά την εκτέλεση και με τη βοήθειά τους μπορούμε να επιλέξουμε (φωτίσουμε) ένα μέρος του κειμένου. Με την ιδιότητα Tag μπορούμε να αποθηκεύσουμε επιπλέον δεδομένα, όπως ένα μυστικό συνθηματικό και να το χρησιμοποιήσουμε στον κώδικα του προγράμματος.

Άλλες χρήσιμες ιδιότητες των πλαισίων κειμένου είναι η Multiline, όπου με την τιμή True θα μπορούμε να εμφανίσουμε πολλές γραμμές κειμένου μέσα στο πλαίσιο και η ScrollBars, η οποία μπορεί να πάρει τις τιμές Horizontal, Vertical, Both ή και None, ανάλογα αν θέλουμε να εμφανίζεται αντίστοιχα η οριζόντια μπάρα κύλισης, η κατακόρυφη μπάρα κύλισης, και οι δύο ή καμία.

 

Μάθημα 15 - Τα Πλήκτρα Εντολών (Command Buttons)

Με τα πλήκτρα εντολών μπορούμε να ξεκινάμε ή να σταματάμε μια ενέργεια (συμβάν). Αυτό γίνεται κάνοντας κλικ πάνω στο πλήκτρο εντολής με το ποντίκι ή επιλέγοντάς το και πατώντας το πλήκτρο Enter. Το κείμενο (επεξήγηση) που θέλουμε να εμφανίζεται πάνω σ' ένα πλήκτρο εντολής, το ορίζουμε με την ιδιότητα Caption του πλήκτρου και αν στο κείμενο αυτό τοποθετήσουμε κάπου τον χαρακτήρα &, θα μπορούμε να ενεργοποιήσουμε το πλήκτρο εντολής κρατώντας πατημένο το πλήκτρο Alt και πατώντας τον χαρακτήρα που θα ακολουθεί το σύμβολο & και το οποίο θα εμφανίζεται υπογραμμισμένο όταν τα εκτελείται η εφαρμογή.

Αν η ιδιότητα Default ενός πλήκτρου εντολής είναι True, τότε θα μπορούμε να το επιλέξουμε πατώντας μόνο το πλήκτρο Enter, ενώ αν ιδιότητα Cancel ενός πλήκτρου εντολής είναι True, τότε θα μπορούμε να το επιλέξουμε πατώντας μόνο το πλήκτρο Esc.

Οι σημαντικότερες ιδιότητες ενός πλήκτρου εντολής είναι οι εξής :

Ιδιότητα Περιγραφή Παράδειγμα
Appearance (Εμφάνιση) Μπορούμε να επιλέξουμε τρισδιάσταση ή επίπεδη εμφάνιση 1 = τρισδιάσταση
0 = επίπεδη
Default (Προεπιλογή) Επιλέγουμε πατώντας το πλήκτρο Enter True, False
Cancel (Ακύρωση) Επιλέγουμε πατώντας το πλήκτρο Esc True, False
Caption (Τίτλος) Το κείμενο που εμφανίζεται πάνω στο πλήκτρο εντολής Αλφαριθμητική μεταβλητή
Font (Γραμματοσειρά) Μπορούμε να ορίσουμε τύπο και μέγεθος γραμματοσειράς UB Times, Bold, 13

 

Μάθημα 16 - Τα Πλήκτρα Επιλογής (Option Buttons)

Ένα πλήκτρο επιλογής έχει πάντα κυκλικό σχήμα και περιέχει μια επιλογή που μπορεί να είναι ενεργή ή ανενεργή, δηλ. να έχει τιμή True ή False αντίστοιχα. Όταν το πλήκτρο επιλογής είναι ενεργό (επιλεγμένο), εμφανίζεται μια βούλα μέσα στον κύκλο, ενώ όταν είναι ανενεργό, ο κύκλος είναι άδειος.

Συνήθως τα πλήκτρα επιλογής εμφανίζονται πολλά μαζί σε ομάδες αμοιβαία αποκλειόμενων επιλογών, δηλ. από κάθε ομάδα μπορούμε να επιλέξουμε ένα και μόνο ένα πλήκτρο επιλογής. Για να ομαδοποιήσουμε κάποια πλήκτρα επιλογής, τα σχεδιάζουμε μέσα σ' ένα πλαίσιο επιλογής. Πρώτα σχεδιάζουμε το πλαίσιο επιλογής και μετά τα πλήκτρα επιλογής που θα περιέχει.

Με την ιδιότητα Caption ενός πλήκτρου επιλογής μπορούμε να εμφανίσουμε ένα επεξηγηματικό κείμενο (ετικέτα) δίπλα του, ώστε να γνωρίζει ο χρήστης τι θα γίνει αν το επιλέξει. Με την ιδιότητα Value ενός πλήκτρου επιλογής, η οποία μπορεί να είναι True ή False, μπορούμε να μάθουμε αν το πλήκτρο επιλογής θα είναι επιλεγμένο ή όχι.

Ακολουθεί ένα παράδειγμα :

If optLevel.Value = True Then
        MsgBox
"Το πλήκτρο επιλογής είναι επιλεγμένο (ενεργό)"
Else
        MsgBox "Το πλήκτρο επιλογής δεν είναι επιλεγμένο (είναι ανενεργό)"
End

Επειδή η ιδιότητα Value είναι default, θα μπορούμε να την παραλείψουμε :

If optLevel Then

 

Μάθημα 17 - Τα Πλαίσια Ελέγχου (Check Boxes)

Ένα πλαίσιο ελέγχου έχει πάντα τετράγωνο σχήμα και περιέχει μια ένδειξη αν είναι ενεργό ή όχι. Τα πλαίσια ελέγχου είναι ανεξάρτητα μεταξύ τους και αν και μπορούμε να τα οργανώσουμε σε ομάδες, από τα πλαίσια ελέγχου μια ομάδας μπορεί να είναι επιλεγμένα όλα ή κανένα ή οσαδήποτε.

Με την ιδιότητα Caption ενός πλαισίου ελέγχου μπορούμε να εμφανίσουμε ένα επεξηγηματικό κείμενο (ετικέτα) δίπλα του, ώστε να γνωρίζει ο χρήστης τι θα γίνει αν το επιλέξει. Με την ιδιότητα Value ενός πλαισίου ελέγχου, η οποία μπορεί να είναι 0, 1 ή 2, μπορούμε να μάθουμε την κατάσταση του πλαισίου ελέγχου (1=ενεργό, 0=ανενεργό, 2=δεν μπορεί να επιλεγεί, δηλ. είναι γκρίζο)..

Ακολουθεί ένα παράδειγμα :

Select Case chkSound.Value
        Case 0
            Msg
= "Ανενεργό"
        Case 1
            Msg = "Ενεργό"
        Case 2
            Msg = "Δεν μπορεί να επιλεγεί"
End Select
MsgBox Msg

Επειδή η ιδιότητα Value είναι default, θα μπορούμε να την παραλείψουμε :

Select Case chkSound

 

Μάθημα 18 - Οι Μπάρες Κύλισης (Scroll Bars)

Οι μπάρες κύλισης (scroll bars) μπορεί να είναι κατακόρυφες (vertical) ή οριζόντιες (horizontal) και αποτελούνται από τρεις ξεχωριστές περιοχές, στις οποίες μπορούμε να κάνουμε κλικ ή να σύρουμε για να αλλάξουμε την τιμή τους (ιδιότητα Value). Οι περιοχές αυτές είναι τα δύο βελάκια στα άκρα, το μικρό ορθογώνιο ή κουτί κύλισης στη μέση της μπάρας και το σώμα της μπάρας. Με τις ιδιότητες Min και Max μπορούμε να ορίσουμε την μικρότερη και την μεγαλύτερη τιμή αντίστοιχα που μπορεί να πάρει η μπάρα.

Με την ιδιότητα LargeChange μπορούμε να ορίσουμε την αλλαγή στην τιμή της μπάρας όταν κάνουμε κλικ στον κενό χώρο ανάμεσα στο ορθογώνιο κύλισης, ενώ με την ιδιότητα SmallChange μπορούμε να ορίσουμε την αλλαγή στην τιμή της μπάρας όταν κάνουμε κλικ στα βελάκια στα άκρα της μπάρας.

Όταν κάνουμε κλικ σε μια μπάρα κύλισης, εκτελείται το συμβάν Change, ενώ όταν σύρουμε το ορθογώνιο κύλισης μιας μπάρας κύλισης, εκτελείται το συμβάν Scroll.

 

Μάθημα 19 - Τα Πλαίσια Λίστας (List Boxes)

Ένα πλαίσιο λίστας (list box) εμφανίζει μια λίστα στοιχείων απ' όπου μπορούμε να επιλέξουμε ένα ή περισσότερα στοιχεία. Αν δεν είναι δυνατό να εμφανισθούν όλα τα στοιχεία στη λίστα, τότε εμφανίζεται αυτόματα μια κατακόρυφη μπάρα κύλισης.

Η ιδιότητα ListCount επιστρέφει το πλήθος των στοιχείων της λίστας και η ιδιότητα ListIndex επιστρέφει τον αύξοντα αριθμό του επιλεγμένου στοιχείου. Το πρώτο στοιχείο της λίστας έχει αρίθμηση 0 και το τελευταίο έχει αρίθμηση ListCount-1. Αν δεν είναι επιλεγμένο κάποιο στοιχείο, η ListIndex έχει τιμή -1. Με την ιδιότητα Selected μπορούμε να μάθουμε αν ένα στοιχείο μιας λίστας είναι επιλεγμένο.

Ακολουθεί ένα παράδειγμα :

iSize = lst1.ListCount-1        'βρίσκουμε το πλήθος των στοιχείων της λίστας lst1
For i = 0 To iSize
                    'διατρέχουμε όλα τα στοιχεία της λίστας
    If lst1.Selected(i) = True Then

        MsgBox lst1.List(i)        'εμφανίζουμε ένα στοιχείο της λίστας μόνο αν είναι επιλεγμένο
    EndIf
Next

 

Μάθημα 20 - Τα Σύνθετα Πλαίσια Λίστας (Combo Boxes)

Ένα σύνθετο πλαίσιο (combo box) είναι ίδιο μ' ένα πλαίσιο λίστας, με τη διαφορά ότι περιέχει και ένα πλαίσιο κειμένου για να μπορούμε να προσθέσουμε κι άλλες επιλογές και περιέχει και ένα πτυσσόμενο μενού για να μπορούμε να εμφανίσουμε τα στοιχεία της λίστας. Με την ιδιότητα Style Property ενός σύνθετου πλαισίου μπορούμε να καθορίσουμε τον τύπο του με τις εξής τιμές :

Οι περισσότερες ιδιότητες και μέθοδοι των πλαισίων λίστας και των σύνθετων πλαισίων λίστας είναι κοινές και είναι οι εξής :

Ιδιότητα Περιγραφή Παράδειγμα
ListCount Πλήθος στοιχείων της λίστας iItems=lstMyList.ListCount-1
ListIndex Αριθμός επιλεγμένου στοιχείου της λίστας lstMyList.ListIndex=3
List Επιστρέφει ένα στοιχείο μιας λίστας sSecondItem=lstMyList.List(1)
Selected Επιστρέφει τιμή True αν το στοιχείο είναι επιλεγμένο If lstMyList.Selected(3) Then ...
Sorted Αυτόματη ταξινόμηση με την τιμή True lstMyList.Sorted=True

 

Μέθοδος Περιγραφή Παράδειγμα
AddItem Προσθέτουμε στοιχεία στη λίστα lstMyList.AddItem "Φλώρινα"
Clear Διαγράφουμε όλα τα στοιχεία της λίστας lstMyList.Clear
RemoveItem Διαγράφουμε ένα στοιχείο της λίστας lstMyList.RemoveItem 5

 

Μάθημα 21 - Οι Πίνακες (Arrays)

Οι πίνακες (arrays), δηλ. οι μεταβλητές με δείκτη, στη Visual Basic δηλώνονται ως εξής :

Dim saNames(3) As String        'δηλώνουμε όνομα, μέγεθος και τύπο τιμών του πίνακα
saNames(0) =
"Σουμπάσης"
saNames(0) =
"Σουμπάσης"
saNames(0) = "Σουμπάσης"
For i = 0 To 2                            'εκτυπώνουμε τα στοιχεία του πίνακα
    Print saNames(i)
Next

 

Μάθημα 22 - Τα Μενού (Menus)

Για να δημιουργήσουμε μενού στη Visual Basic, χρησιμοποιούμε την εφαρμογή Menu Editor, η οποία ανοίγει με την επιλογή Menu Editor... του μενού Tools μιας φόρμας ή αν πατήσουμε τα πλήκτρα Control+E ή το αντίστοιχο πλήκτρο στη γραμμή εργαλείων.

Στο πλαίσιο διαλόγου που θα εμφανισθεί και στο πλαίσιο κειμένου Caption γράφουμε το όνομα (τίτλο) του μενού ή της εντολής που θα εμφανισθεί στη μπάρα εργαλείων ή σ' ένα πτυσσόμενο μενού επιλογών. Αν γράψουμε το σύμβολο & πριν από κάποιο γράμμα του ονόματος, θα μπορούμε να επιλέγουμε αυτή την εντολή πατώντας το πλήκτρο Alt και το γράμμα αυτό, το οποίο και θα εμφανίζεται υπογραμμισμένο κατά την εκτέλεση της εφαρμογής.

Αν αντί για κείμενο, γράψουμε το σύμβολο - στο πλαίσιο κειμένου Caption, θα δημιουργηθεί μια διαχωριστική μπάρα, για να μπορούμε να ξεχωρίσουμε τα στοιχεία του μενού σε ομάδες. Στο πλαίσιο κειμένου Name γράφουμε το όνομα για το στοιχείο ενός μενού, το οποίο θα χρησιμοποιηθεί στον κώδικα του στοιχείου και έχει το πρόθεμα mnu.

Στο πλαίσιο κειμένου Index γράφουμε μια αριθμητική τιμή για να ορίσουμε τη θέση του στοιχείου μέσα στο μενού. Αν είναι επιλεγμένο το πλαίσιο ελέγχου Checked, θα εμφανισθεί το γνωστό σύμβολο Ö  στα αριστερά του στοιχείου του μενού, που σημαίνει ότι το στοιχείο του μενού είναι προεπιλεγμένο. Αν είναι επιλεγμένο το πλαίσιο ελέγχου Enabled, το στοιχείο του μενού θα είναι ενεργό, δηλ. θα μπορούμε να το επιλέξουμε, διαφορετικά θα είναι ανενεργό (γκρίζο).

Αν είναι επιλεγμένο το πλαίσιο ελέγχου Visible, το στοιχείο του μενού θα είναι ορατό, διαφορετικά δεν θα εμφανίζεται καθόλου στο μενού. Αυτή η δεύτερη επιλογή είναι χρήσιμη όταν έχουμε ένα αυτόνομο ή πτυσσόμενο μενού, όπου τα στοιχεία του μενού δεν είναι πάντα ορατά.

Αφού κλείσουμε το Menu Editor, μπορούμε να επιλέξουμε ένα στοιχείο του μενού κατά τη σχεδίαση για να ανοίξει το παράθυρο κώδικα για το συμβάν Click του στοιχείου αυτού.

Ακολουθούν παραδείγματα :

Private Sub mnuOpen_Click()                                'ο κώδικας για το συμβάν Click του μενού Open
    mnuClose.Enabled = True          
                       'γίνεται ενεργό το στοιχείο μενού Close
    mnuEdit.Caption = "
Επεξεργασία Αρχείων"     'αλλάζουμε το κείμενο (τίτλο) του μενού Edit
    mnuPrint.Visible = True                                     'εμφανίζεται το στοιχείου μενού Print
End Sub

 

Μάθημα 23 - Το Χρονόμετρο (Timer)

Το Timer είναι ένας χρονοδιακόπτης (συμβάν) που είναι αόρατος στον τελικό χρήστη αλλά είναι χρήσιμος για επεξεργασία στο παρασκήνιο. Λειτουργεί παρασκηνιακά, ανεξάρτητα και συνέχεια, ό,τι κι αν συμβαίνει στο πρόγραμμα. Με το συμβάν Timer έχουμε τη δυνατότητα να εκτελούμε κάποιον κώδικα προγράμματος σε τακτά χρονικά διαστήματα, όπου η συχνότητα των διαστημάτων καθορίζεται από την ιδιότητα Interval σε χιλιοστά του δευτερολέπτου.

Το συμβάν Timer καθορίζει τι θα γίνει μόλις περάσει το χρονικό διάστημα που ορίζει ο χρονοδιακόπτης. Αν ορίσουμε την ιδιότητα Enabled του Timer σε False ή θέσουμε την ιδιότητα Interval σε 0, θα μπορούμε να αναστείλουμε τη λειτουργία του Timer. Την τιμή της ιδιότητας Interval μπορούμε να την αλλάξουμε και κατά τη διάρκεια της εκτέλεσης του κώδικα.

 

Μάθημα 24 - Τα Αρχεία στη Visual Basic

Για να μπορέσουμε να διαβάσουμε τα στοιχεία ενός αρχείου ή να γράψουμε σ' αυτό (προσθήκη ή τροποποίησηεγγραφών), θα πρέπει πρώτα να το κάνουμε ενεργό, να το ανοίξουμε δηλαδή, με την εντολή Open. Η εντολή Open στην ουσία κατανέμει (εκχωρεί) έναν ενδιάμεσο καταχωρητή μνήμης (buffer) στο αρχείο και καθορίζει και τον τρόπο προσπέλασής του. Μπορούμε να ανοίξουμε έναν αρχείο μ' έναν από τους εξής τρεις τρόπους : Δυαδικά, Σειριακά και Τυχαία.

Η εντολή Open συντάσσεται ως εξής :

Open sPathName for Mode As #FileNumber Len=RecLength

Το sPathName είναι μια συμβολοσειρά που περιέχει τη διαδρομή, δηλ. μονάδα δίσκου και κατάλογο, και το όνομα του αρχείου που θέλουμε να ανοίξουμε. Αν το αρχείο δεν υπάρχει, θα δημιουργηθεί ως κενό σε μια από τις λειτουργίες Append, Binary, Output ή Random.

Αν ήδη υπάρχει και το ανοίξουμε σε λειτουργία Output, τότε θα διαγραφεί το παλιό αρχείο και θα δημιουργηθεί ένα καινούργιο με το ίδιο όνομα, ενώ αν ήδη υπάρχει και το ανοίξουμε σε λειτουργία Append, τότε θα παραμείνει το παλιό αρχείο και οι καινούργιες εγγραφές θα προστεθούν στο τέλος του αρχείου.

Το Mode ορίζει τη λειτουργία για την οποία θα ανοίξουμε το αρχείο. Για σειριακή (ακολουθιακή) προσπέλαση, μπορούμε να ορίσουμε Append (για προσθήκη δεδομένων) ή Input (μόνο για διάβασμα από το αρχείο) ή Output (για δημιουργία καινούργιου αρχείου για καταχώρηση στοιχείων). Για να ανοίξουμε ένα αρχείο σε λειτουργία Binary (δυαδικό) ή Random (τυχαίας προσπέλασης), χρησιμοποιούμε την αντίστοιχη λέξη.

Το FileNumber πρέπει να είναι ένας έγκυρος ακέραιος αριθμός αρχείου, με δυνατές τιμές από 1 έως και 511. Το RecLength είναι ένας αριθμός <=32767 και ορίζει το συνολικό μήκος της εγγραφής αλλά μόνο για τα αρχεία τυχαίας προσπέλασης.

Για να κλείσουμε ένα αρχείο, χρησιμοποιούμε την εντολή Close, η οποία έχει την εξής σύνταξη :

Close FileNumberList

Το FileNumberList είναι προαιρετικό και μπορεί να αποτελείται από έναν ή περισσότερους αριθμούς αρχείων, χωρισμένους με κόμματα. Αν το παραλείψουμε και χρησιμοποιήσουμε την εντολή Close χωρίς όρισμα, θα κλείσουν όλα τα ενεργά (ανοικτά) αρχεία. Με την εντολή Close τερματίζει ο συσχετισμός ενός αρχείου με τον αριθμό που του είχε αποδοθεί και απευλεθερώνεται όλη η μνήμη που του είχε κατανεμηθεί.

 

Μάθημα 25 - Τα Σειριακά Αρχεία

Σ' ένα αρχείο που ανοίγει για σειριακή ή ακολουθιακή προσπέλαση, μπορούμε να κάνουμε είσοδο (διάβασμα) και έξοδο (γράψιμο) με τις εντολές Line Input # και Print # αντίστοιχα, αλλά όχι και τις δύο λειτουργίες ταυτόχρονα. Με την εντολή Line Input # διαβάζουμε μια ολόκληρη γραμμή αρχείου και την καταχωρούμε σε μια μεταβλητή συμβολοσειράς, ενώ με την εντολή Print # γράφουμε τα περιεχόμενα μιας μεταβλητής σε μια γραμμή του αρχείου.

Τη σειριακή προσπέλαση την χρησιμοποιούμε όταν έχουμε να κάνουμε με αρχεία που αποτελούνται από γραμμές (εγγραφές) μεταβλητού μεγέθους, όπως είναι για παράδειγμα τα αρχεία κειμένου. Τα σειριακά αρχεία έχουν το μειονέκτημα ότι για να μπορέσουμε να διαβάσουμε μια εγγραφή, θα πρέπει να διατρέξουμε όλες τις προηγούμενες εγγραφές του αρχείου, αλλά έχουν και το πλεονέκτημα ότι καταλαμβάνουν λιγότερο χώρο στον δίσκο από τα αρχεία τυχαίας προσπέλασης, στα οποία, όμως, η αναζήτηση στοιχείων είναι πολύ πιο γρήγορη.

Ακόμη, δεν μπορούμε σ' ένα σειριακό αρχείο να διαβάσουμε και να γράψουμε ταυτόχρονα, αλλά θα πρέπει πρώτα να γράψουμε, μετά να το κλείσουμε για να μπορέσουμε να διαβάσουμε κοκ.

Η εντολή Line Input # διαβάζει μια ολόκληρη γραμμή από ένα ανοικτό αρχείο σειριακής προσπέλασης, το οποίο έχει ανοιχθεί με την επιλογή Input, και καταχωρεί τα περιεχόμενα της γραμμής σε μια μεταβλητή συμβολοσειράς (string). Η σύνταξή της είναι ως εξής :

Line Input #FileNumber, sVarName

όπου το FileNumber είναι ο αριθμός του αρχείου από το οποίο θα διαβάσουμε και το sVarName είναι η μεταβλητή συμβολοσειράς στην οποία θα καταχωρηθεί αυτό που θα διαβάσουμε. Η εντολή θα διαβάσει ό,τι βρει μέχρις ότου συναντήσει έναν χαρακτήρα επαναφοράς (enter, Chr(13)) ή επαναφοράς-τροφοδότησης γραμμής (Chr(13)+Chr(10)).

Ακολουθεί ένα παράδειγμα :

iFileNumber = 1                                'απόδοση τιμής στη μεταβλητή αριθμού αρχείου
Open "C:\File01.dat" for Input As #iFileNumber        'άνοιγμα του σειριακού αρχείου File01.dat μόνο για διάβασμα (ανάγνωση)
'διάβασμα και εμφάνιση των περιεχομένων των 10 πρώτων γραμμών του αρχείου
For i=1 To 10
    Line Input #iFileNumber, sStringLine$
    Print sStringLine$
Next
Close #iFileNumber
        'κλείσιμο του αρχείου

Η εντολή Print # γράφει (καταχωρεί) δεδομένα σ' ένα ανοικτό αρχείο σειριακής προσπέλασης, το οποίο έχει ανοιχθεί με μια από τις επιλογές Output ή Append, για μία γραμμή κάθε φορά που την χρησιμοποιούμε. Η σύνταξή της είναι ως εξής :

Print #FileNumber, OutputList

όπου το FileNumber είναι ο αριθμός του αρχείου στο οποίο θα γράψουμε και το OutputList είναι μια μεταβλητή συμβολοσειράς ή αριθμητική παράσταση που θα καταχωρηθεί στο αρχείο. Αν παραλείψουμε το OutputList, αλλά γράψουμε το κόμμα (,) μετά το FileNumber, θα γραφεί μια κενή γραμμή στο αρχείο.

Ακολουθεί ένα παράδειγμα :

iFileNumber = 1                                'απόδοση τιμής στη μεταβλητή αριθμού αρχείου
Open "C:\File01.dat" for Output As #iFileNumber        'άνοιγμα του σειριακού αρχείου File01.dat μόνο για γράψιμο (καταχώρηση)
                                                                                                'και διαγραφή του παλιού αρχείου, αν τυχόν υπήρχε

'γράψιμο 10 γραμμών (εγγραφών) στο αρχείο
For i=1 To 10
       Print #iFileNumber, sStringLine$
Next
Close #iFileNumber
        'κλείσιμο του αρχείου

 

Μάθημα 26 - Τα Αρχεία Τυχαίας Προσπέλασης

Στα αρχεία τυχαίας προσπέλασης (random files) τα δεδομένα είναι αποθηκευμένα σε εγγραφές σταθερού μήκους, τις οποίες μπορούμε να προσπελάσουμε απευθείας και με τυχαία σειρά, χωρίς να χρειασθεί να διαβάσουμε όλες τις προηγούμενες εγγραφές, όπως συμβαίνει με τα σειριακά αρχεία.

Με την εντολή Put # μπορούμε να γράψουμε (καταχωρήσουμε) μια εγγραφή σ' ένα αρχείο τυχαίας προσπέλασης, ενώ με την εντολή Get # μπορούμε να διαβάσουμε μια εγγραφή. Σ' ένα αρχείο τυχαίας προσπέλασης μπορούμε να διαβάσουμε και να γράψουμε ταυτόχρονα, χωρίς να χρειασθεί να κλείσουμε πρώτα το αρχείο, όπως συμβαίνει με τα σειριακά αρχεία. Ένα αρχείο τυχαίας προσπέλασης είναι οργανωμένο σε εγγραφές (records) και πεδία (fields).

Η σύνταξη της εντολής Put # είναι ως εξής :

Put # FileNumber, RecNumber, VarName

όπου το FileNumber είναι ο αριθμός του αρχείου στο οποίο θα γράψουμε, το RecNumber είναι ο αριθμός της εγγραφής και το VarNumber είναι το όνομα της μεταβλητής τύπου εγγραφής που περιέχει τα δεδομένα που θέλουμε να γραφούν στο αρχείο.

Η σύνταξη της εντολής Get # είναι ως εξής :

Get # FileNumber, RecNumber, VarName

όπου το FileNumber είναι ο αριθμός του αρχείου από το οποίο θα διαβάσουμε, το RecNumber είναι ο αριθμός της εγγραφής και το VarNumber είναι το όνομα της μεταβλητής τύπου εγγραφής στην οποία θα καταχωρηθούν τα δεδομένα της αντίστοιχης εγγραφής του αρχείου.

Ακολουθεί ένα παράδειγμα :

'δημιουργία οριζόμενου από τον χρήστη τύπου δεδομένων
Type ClientRecord
    Name As String * 30
    Address As String * 30
    Phone As String * 10
End Type
Dim CurrentRecord As ClientRecord
Open "C:\File01.dat" for Random As #10 Len=100        'άνοιγμα του αρχείου τυχαίας προσπέλασης File01.dat στη θέση 10
iRecordNumber = 1            'ξεκινάμε από την πρώτη εγγραφή
Do While iRecordNumber < 100
    ...
    CurrentRecord.Name =
"Παπαδόπουλος Νικόλαος"
   
CurrentRecord.Address = "Λεωφ. Συγγρού 100"
   
CurrentRecord.Phone = "2101234567"
    ...
    iRecordNumber = iRecordNumber + 1
    Put #10, iRecordNumber
, CurrentRecord        'καταχώρηση ολόκληρης της εγγραφής στο αρχείο
    ...
    Get #10, iRecordNumber, CurrentRecord       'διάβασμα ολόκληρης της εγγραφής του αρχείου σε μια μεταβλητή

    New_Name = CurrentRecord.Name
    New_Address = CurrentRecord.Address
    New_Phone =
CurrentRecord.Phone
    iRecordNumber = iRecordNumber + 1
    ...
Loop
Close #
10                                'κλείσιμο του αρχείου

 

Μάθημα 27 - Επεξεργασία Αρχείων της Access με την Visual Basic

Με την επιλογή Data Manager του μενού Add-Ins μπορούμε να δημιουργήσουμε βάσεις δεδομένων (databases) καθώς και να εμφανίζουμε τη δομή ή και τα περιεχόμενα άλλων βάσεων δεδομένων που έχουν ήδη δημιουργηθεί σ' άλλα προγράμματα, όπως είναι η Access. Το Data Manager συνεργάζεται καλύτερα με την Access, τα αρχεία της οποίας μπορεί να τα δημιουργήσει, να τα εμφανίσει αλλά και να τα τροποποιήσει. Οι βάσεις δεδομένων που δημιουργούμε με το Data Manager έχουν την επέκταση .mdb.

Μια βάση δεδομένων αποτελείται από έναν ή περισσότερους πίνακες (tables), κάθε πίνακας είναι ένα σύνολο από ένα ή περισσότερα πεδία (fields) και πολλά πεδία μαζί αποτελούν μια εγγραφή (record). Μπορούμε να δημιουργήσουμε μια βάση δεδομένων με το Data Manager ή και να χρησιμοποιήσουμε μια έτοιμη βάση δεδομένων της Access.

Για να συνδέσουμε τώρα μια εφαρμογή της Visual Basic με μια βάση δεδομένων της Visual Basic ή της Access, θα πρέπει να χρησιμοποιήσουμε το εικονίδιο Data της γραμμής εργαλείων. Το επιλέγουμε και σχεδιάζουμε πάνω στη φόρμα με τη μορφή μιας οριζόντιας μπάρας κύλισης.

Από τις ιδιότητες του οργάνου Data μάς ενδιαφέρουν οι εξής :

Align Επιλέγουμε την ευθυγράμμιση του οργάνου
Caption Ετικέτα (τίτλος) του οργάνου
DatabaseName Το πλήρες όνομα της βάσης δεδομένων που θα συνδεθεί με τη φόρμα
Name Το όνομα του οργάνου
RecordSource Ο πίνακας ή η πρόταση SQL της βάσης δεδομένων απ' όπου θα πάρουμε τα στοιχεία

Αφού σχεδιάσουμε ένα όργανο Data, του δίνουμε την κατάλληλη ετικέτα (Caption) και ορίζουμε με ποια βάση δεδομένων, από την ιδιότητα DatabaseName, και με ποιον πίνακα, από την ιδιότητα RecordSource, θα συνδεθεί. Η επόμενη εργασία είναι να σχεδιάσουμε μέσα στη φόρμα τόσα πλαίσια κειμένου όσα είναι και τα πεδία του πίνακα που θέλουμε να εμφανίσουμε και στην ιδιότητα DataSource του κάθε πλαισίου κειμένου επιλέγουμε το όργανο Data με το οποίο θα συνδεθεί, ενώ στην ιδιότητα  DataField επιλέγουμε το πεδίο του πίνακα, τα στοιχεία του οποίοου θέλουμε να εμφανίζονται στο πλαίσιο κειμένου.

Όταν εκτελεσθεί η εφαρμογή, θα εμφανισθούν στα αντίστοιχα πλαίσια κειμένου της φόρμας οι τιμές των εγγραφών του πίνακα που έχουμε επιλέξει  και θα μπορούμε να κάνουμε τροποποιήσεις στα πλαίσια κειμένου, οπότε θα αλλάξουν και οι τιμές των πεδίων του αντίστοιχου πίνακα. Ακόμη, στο όργανο Data υπάρχουν τα γνωστά πλήκτρα (βελάκια) για να πάμε στην πρώτη, την τελευταία, την επόμενη και την προηγούμενη εγγραφή του πίνακα.

 

back.gif (9867 bytes)

Επιστροφή