ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ
Χρήσιμες (Υποδείξεις) Tips στη Visual Basic
Διάφορα
Μπορούμε να γράψουμε και περισσότερες από μία εντολές στην ίδια γραμμή, χρησιμοποιώντας τον χαρακτήρα :, ως εξής :
A = 0 : B = 1 : C = 10
Με τον χαρακτήρα _ μπορούμε να διασπάσουμε μια εντολή σε περισσότερες από μία γραμμές, ως εξής :
X = "Select Code, Description, Price From Proion " &_
" Where Price > 1000"
Σε μια μεταβλητή τύπου ημερομηνίας μπορούμε να εκχωρήσουμε τιμή ως εξής :
Date01 = #01/12/2001#
Σε μια μεταβλητή τύπου ημερομηνίας μπορούμε να προσθέσουμε ή να αφαιρέσουμε ένα πλήθος ημερών, ως εξής :
Date02 = #01/12/2001# + 10
Date03 = Date02 - 100
Η εκχώρηση μιας τυχαίας ακέραιας τιμής στο διάστημα από 1 έως 6, γίνεται ως εξής :
a = Int(6 * Rnd + 1)
Το παράθυρο Form Layout μάς βοηθά να καθορίσουμε τις αρχικές θέσεις των φορμών στη οθόνη όταν εκτελείται η εφαρμογή και δεν είναι διαθέσιμο στη Visual Basic 4.0.
Στη Visual Basic όλα τα μεγέθη μετρώνται σε twips, όπου η κάθε στιγμή (point) έχει 20 twips. Έτσι, αφού η μια ίντσα έχει 72 στιγμές, υπάρχουν 1.440 twips σε κάθε ίντσα ή περίπου 567 ανά εκατοστό.
Μια φόρμα της Visual Basic μπορεί να χρησιμοποιηθεί σ’ οποιοδήποτε αριθμό έργων (projects). Αυτό προσφέρει ομοιομορφία μεταξύ των εφαρμογών και μειώνει τον όγκο της ανάπτυξης που πρέπει να γίνει.
Η αλλαγή της ιδιότητας Name μιας μη αποθηκευμένης φόρμας μπορεί να αλλάξει το προτεινόμενο όνομα του αρχείου, ενώ η αλλαγή του ονόματος του αρχείου δεν επηρεάζει την ιδιότητα Name της φόρμας.
Για να προσθέσουμε ένα υπάρχον αρχείο φόρμας σ’ ένα έργο, επιλέγουμε Add Form από το μενού Project, κάνουμε κλικ στο Existing και επιλέγουμε το αρχείο της φόρμας από τη λίστα των αρχείων.
Για να αφαιρέσουμε μια φόρμα από ένα έργο, την επιλέγουμε στο πλαίσιο του Project Explorer και πάμε στην επιλογή Remove του μενού Project. Το αρχείο της φόρμας δεν επηρεάζεται και μπορούμε να το επαναφέρουμε όποτε χρειασθεί.
Για να τοποθετήσουμε ένα χειριστήριο σε μια φόρμα, μπορούμε να κάνουμε διπλό κλικ πάνω του για να δημιουργηθεί ένα αντικείμενο προκαθορισμένου μεγέθους.
Για να επιλέξουμε πολλά χειριστήρια, κάνουμε κλικ πάνω τους ενώ κρατάμε πατημένο το πλήκτρο Shift. Τα χειριστήρια αποκτούν λευκές λαβές μεγέθους.
Οι κανόνες για τα ονόματα (ιδιότητα Name) των χειριστηρίων είναι οι εξής :
Μπορούν να έχουν μέχρι 40 χαρακτήρες.
Μπορούν να αποτελούνται από γράμματα, αριθμούς και τον χαρακτήρα _ και όχι άλλους χαρακτήρες ή κενά.
Πρέπει να ξεκινούν με γράμμα.
Δεν ξεχωρίζονται τα πεζά από τα κεφαλαία γράμματα.
Τα χειριστήρια έχουν τις ιδιότητες Width και Height για το μέγεθός τους και τις ιδιότητες Left και Top για τη θέση τους στη φόρμα, οι οποίες καθορίζουν τη θέση της πάνω αριστερής γωνίας του χειριστηρίου σε σχέση με την πάνω αριστερή γωνία του εσωτερικού της φόρμας.
Το πλέγμα που χρησιμοποιούμε για τη στοίχιση των χειριστηρίων σε μια φόρμα, μπορούμε να το τροποποιήσουμε ή να το αφαιρέσουμε με την επιλογή Options του μενού Tools και κλικ στην καρτέλα Environment. Εκεί υπάρχει το πλαίσιο ελέγχου Show Grid, τα πλαίσια κειμένου Width και Height και το πλαίσιο ελέγχου Align Controls to Grid. Το διάστημα μεταξύ των γραμμών του πλέγματος είναι σε twips.
Το χρώμα φόντου ενός χειριστηρίου καθορίζεται από την ιδιότητα BackColor, ενώ για χειριστήρια που εμφανίζουν κείμενο ή γραφικά, υπάρχει και η ιδιότητα ForeColor που καθορίζει το χρώμα τους.
Η σειρά με την οποία μεταφέρεται η εστίαση (focus) από χειριστήριο σε χειριστήριο όταν πατάμε το πλήκτρο Tab καθορίζεται από τις ιδιότητες TabStop και TabIndex. Η ιδιότητα TabStop καθορίζει αν ένα χειριστήριο μπορεί να έχει την εστίαση ή όχι (True, False αντίστοιχα), ενώ η ιδιότητα TabIndex είναι μια αριθμητική τιμή που καθορίζει τη σειρά εστίασης των χειριστηρίων. Δεν μπορούν δύο χειριστήρια στην ίδια φόρμα να έχουν την ίδια τιμή στην ιδιότητα TabIndex.
Μπορούμε να προσθέσουμε κι άλλα χειριστήρια εκτός από τα ήδη υπάρχοντα, που ονομάζονται χειριστήρια ActiveX, με την επιλογή Components του μενού Project.
Τα Πλήκτρα Εντολής (Command Buttons)
Το κείμενο που εμφανίζεται σ’ ένα πλήκτρο εντολής βρίσκεται στην ιδιότητα Caption. Η ιδιότητα Default καθορίζει ότι το πλήκτρο εντολής θα ενεργοποιηθεί όταν πατήσουμε το Enter. Μόνο ένα πλήκτρο εντολής μπορεί να έχει σε μια φόρμα την τιμή True για την ιδιότητα Default και όλα τα άλλα πλήκτρα εντολής πρέπει να έχουν την τιμή False.
Η ιδιότητα Cancel καθορίζει ότι το πλήκτρο εντολής θα ενεργοποιηθεί όταν πατήσουμε το Esc. Μόνο ένα πλήκτρο εντολής μπορεί να έχει σε μια φόρμα την τιμή True για την ιδιότητα Cancel και όλα τα άλλα πλήκτρα εντολής πρέπει να έχουν την τιμή False.
Η ιδιότητα Value, που μπορεί να ορισθεί μόνο κατά τη διάρκεια εκτέλεσης, καθορίζει αν το πλήκτρο έχει πατηθεί. Ορίζοντάς την σαν True, προϋποθέτουμε το πάτημα του πλήκτρου.
Τα Πλαίσια Κειμένου (Text Boxes)
Η ιδιότητα MaxLength θέτει ένα όριο στον αριθμό των χαρακτήρων που μπορούν να καταχωρηθούν σ’ ένα πλαίσιο κειμένου. Αν έχει την τιμή 0, που είναι και η προκαθορισμένη, δεν υπάρχει όριο στον αριθμό των χαρακτήρων.
Μπορούμε να χρησιμοποιήσουμε την ιδιότητα PasswordChar για να καταχωρούμε συνθηματικά. Ο χαρακτήρας που ορίζουμε σαν τιμή για την ιδιότητα αυτή θα εμφανίζεται ανεξάρτητα από αυτό που καταχωρεί ο χρήστης, αλλά το πραγματικό κείμενο θα βρίσκεται στην ιδιότητα Text.
Με τον χρονοδιακόπτη (timer) μπορούμε να δημιουργούμε συμβάντα σε προκαθορισμένες χρονικές στιγμές, τις οποίες μπορούμε να ρυθμίσουμε με την ιδιότητα Interval σε χιλιοστά του δευτερολέπτου.
Για ένα πλήκτρο εντολής ή πλήκτρο επιλογής, το συμβάν Click δημιουργείται και όταν δώσουμε στην ιδιότητα Value την τιμή True μέσα στο πρόγραμμα. Για ένα πλαίσιο ελέγχου, το συμβάν Click δημιουργείται αν κάνουμε οποιαδήποτε αλλαγή στην ιδιότητα Value μέσα στο πρόγραμμα.
Το συμβάν Click αποτελείται από άλλα δύο συμβάντα : MouseDown (πλήκτρο ποντικιού πατημένο) και MouseUp (πλήκτρο ποντικιού ελεύθερο).
Καθώς συμπληρώνουμε μια γραμμή κώδικα, η Visual Basic προσπαθεί να μας βοηθήσει εμφανίζοντας ένα πλαίσιο με τους πιθανούς τρόπους συμπλήρωσης της δήλωσης.
Μπορούμε να συνδυάσουμε αντικείμενα κειμένοιυ με το σύμβολο &.
Εκτός από τις ιδιότητες Height και Width μιας φόρμας υπάρχουν και οι ιδιότητες ScaleHeight και ScaleWidth που καθορίζουν τις εσωτερικές διαστάσεις της φόρμας χωρίς τη γραμμή τίτλου και το περίγραμμα. Οι ιδιότητες Height και Width καθορίζουν τις συνολικές διαστάσεις της φόρμας.
Δεν μπορούμε να αλλάξουμε τις ιδιότητες Height και Width του αντικειμένου οθόνης Screen, αλλά μπορούμε να τις χρησιμοποιήσουμε σ’ άλλες εκφράσεις.
Οι True και False αποτελούν σταθερές της Visual Basic με καθορισμένες αριθμητικές τιμές. Η τιμή 0 αντιστοιχεί στο False και μια οποιαδήποτε άλλη τιμή θεωρείται True. Αν χρησιμοποιήσουμε την True σε μια αριθμητική έκφραση, θα θεωρηθεί ίση με –1.
Μέσα στις διαδικασίες ενός αντικειμένου, μπορούμε να παραλείψουμε το όνομα του χειριστηρίου για το συγκεκριμένο αντικείμενο. Για παράδειγμα, οι δύο επόμενες δηλώσεις είναι ίδιες, αν εμφανίζονται μέσα στη διαδικασία cmdSave_Click() :
cmdSave.Enabled = False
Enabled = False
Αν δεν καθορίζεται το αντικείμενο, τότε θεωρείται ότι γίνεται αναφορά στο τρέχον αντικείμενο. Ανάλογα, όλα τα αντικείμενα θεωρείται ότι βρίσκονται στην τρέχουσα φόρμα. Μπορούμε, όμως, να αναφερθούμε σ’ αντικείμενα που βρίσκονται σ’ άλλες φόρμες, χρησιμοποιώντας ως πρόθεμα στο όνομα του αντικειμένου, το όνομα της φόρμας.
Για παράδειγμα, η επόμενη δήλωση απενεργοποιεί ένα πλήκτρο εντολής στη φόρμα frm02 :
frm02.cmdSave.Enabled = False
Τα ονόματα μπορούν να παραλείπονται αν αντιστοιχούν στην τρέχουσα φόρμα ή στο τρέχον χειριστήριο.
Για να φορτώσουμε και να εμφανίσουμε μια φόρμα, χρησιμοποιούμε τη μέθοδο Show, ως εξής :
Private Sub cmdDetails_Click()
frmDetails.Show
End Sub
Μπορούμε να ορίσουμε τη φόρμα που θα εμφανίζεται πρώτη σε μια εφαρμογή (φόρμα εκκίνησης, startup form) με την επιλογή Properties του μενού Project. Στην καρτέλα General και στην πτυσσόμενη λίστα Startup Object επιλέγουμε τη φόρμα εκκίνησης.
Μπορούμε να χρησιμοποιήσουμε τη δήλωση Load για να μεταφέρουμε μια φόρμα στη μνήμη χωρίς να την εμφανίσουμε, όπως για παράδειγμα
Load frmDetails
Όταν μια φόρμα έχει μεταφερθεί στη μνήμη, η μέθοδος Show έχει το ίδιο αποτέλεσμα με το να θέσουμε την ιδιότητα Visible της φόρμας σε True. Μπορούμε να αποκρύψουμε μια φόρμα με τη μέθοδο Hide, ως εξής :
frmDetails.Hide
που είναι το ίδιο με το να θέσουμε την ιδιότητα Visible σε False.
Όταν έχουμε αποκρύψει μια φόρμα, αυτή συνεχίζει να υπάρχει στη μνήμη. Για να απελευθερώσουμε τη μνήμη που δεσμεύει η φόρμα, χρησιμοποιούμε τη δήλωση Unload, ως εξής :
Unload frmDetails
Η παραπάνω δήλωση απομακρύνει τη φόρμα από την οθόνη και μετά από τη μνήμη. Το συμβάν Unload εκτελείται επίσης όταν το παράθυρο κλείνει μ’ έναν οποιονδήποτε τρόπο.
Τα ονόματα των μεταβλητών πρέπει να ακολουθούν τους εξής κανόνες :
Μπορούν να έχουν έως 255 χαρακτήρες και να αποτελούνται από γράμματα, ψηφία και τον χαρακτήρα _.
Πρέπει να ξεκινούν με γράμμα.
Δεν πρέπει να υπάρχουν κενά ή άλλα σύμβολα στο όνομα.
Δεν διακρίνονται τα πεζά από τα κεφαλαία γράμματα.
Δεν πρέπει να χρησιμοποιούμε δεσμευμένες λέξεις ή λέξεις κλειδιά.
Κάθε φόρμα διαθέτει ένα αντικείμενο General στο πάνω μέρος της λίστας αντικειμένων στο παράθυρο Code. Το κάθε αντικείμενο General έχει ένα τμήμα Declarations στο πάνω μέρος της λίστας Procedure. Στο σημείο αυτό μπορούμε να ορίσουμε μεταβλητές που να τις αναγνωρίζουν όλα τα αντικείμενα και οι διαδικασίες της φόρμας.
Οι μεταβλητές εύρους φόρμας ορίζονται στο τμήμα Declarations χρησιμοποιώντας τη λέξη κλειδί Private, ως εξής :
Private i As Integer
Αυτές οι μεταβλητές μπορούν να χρησιμοποιηθούν από οποιαδήποτε διαδικασία σε μια φόρμα. Μπορούμε να χρησιμοποιήσουμε και τη λέξη κλειδί Dim αντί της Private, με το ίδιο αποτέλεσμα.
Με τη λέξη κλειδί Const μπορούμε να ορίσουμε σταθερές, ως εξής :
Const Maximum = 100
Const Poli = "Florina"
Const DateStart = #23/11/2001#
Όταν δίνουμε συγκεκριμένη τιμή σε μια μεταβλητή ημερομηνίας πρέπει να την περικλείσουμε με τους χαρακτήρες #.
Για να βρούμε το ακέραιο πηλίκο μιας διαίρεσης χρησιμοποιούμε τον τελεστή \ και για να βρούμε το ακέραιο υπόλοιπο τον τελεστή Mod.
Οι Αριθμητικές Συναρτήσεις
Η Visual Basic περιλαμβάνει τις ακόλουθες αριθμητικές συναρτήσεις :
Int(), επιστρέφει το ακέραιο μέρος ενός αριθμού.
Abs(), επιστρέφει την απόλυτη τιμή ενός αριθμού.
Sgn(), επιστρέφει το πρόσημο ενός αριθμού, δηλ. 1 αν είναι θετικός, -1 αν είναι αρνητικός και 0 αν είναι μηδέν.
Fix(), επιστρέφει την αποκομμένη τιμή ενός αριθμού.
Sqr(), επιστρέφει την τετραγωνική ρίζα ενός αριθμού.
Log(), επιστρέφει τον φυσικό λογάριθμο ενός αριθμού.
Exp(), επιστρέφει την εκθετική τιμή ενός αριθμού.
Sin(), επιστρέφει το ημίτονο της τιμής σε ακτίνια μιας γωνίας.
Cos(), επιστρέφει το συνημίτονο της τιμής σε ακτίνια μιας γωνίας.
Tan(), επιστρέφει την εφαπτομένη της τιμής σε ακτίνια μιας γωνίας.
Atn(), επιστρέφει το τόξο εφαπτομένης μιας τιμής.
Rnd(), επιστρέφει έναν τυχαίο αριθμό στο διάστημα 0 έως 1, όπου συμπεριλιμβάνει το 0 αλλά όχι και το 1. Αν δεχθεί ως παράμετρο έναν αρνητικό αριθμό, παράγει την ίδια ακολουθία αριθμών κάθε φορά. Συνοδεύεται και από τη δήλωση Randomize, η οποία αρχικοποιεί την ακολουθία των τυχαίων αριθμών.
Οι Αλφαριθμητικές Συναρτήσεις
Η Visual Basic περιλαμβάνει τις ακόλουθες αλφαριθμητικές συναρτήσεις ή συναρτήσεις συμβολοσειράς :
Left(), επιστρέφει μια συμβολοσειρά με όσους χαρακτήρες δηλώσουμε από τα αριστερά της δεδομένης συμβολοσειράς,
π.χ. Left("Florina", 2) = "Fl"
Right(), επιστρέφει μια συμβολοσειρά με όσους χαρακτήρες δηλώσουμε από τα δεξιά της δεδομένης συμβολοσειράς,
π.χ. Right("Florina", 3) = "ina"
Mid(), επιστρέφει μια συμβολοσειρά με όσους χαρακτήρες δηλώσουμε από μια καθορισμένη θέση της δεδομένης συμβολοσειράς,
π.χ. Mid("Florina", 2, 3) = "lor", ενώ αν δεν δηλώσουμε το μήκος των χαρακτήρων, επιστρέφεται όλη η υπόλοιπη συμβολοσειρά μέχρι το τέλος, π.χ. Mid("Florina", 2) = "lorina"
Len(), επιστρέφει το μήκος μιας συμβολοσειράς,
π.χ. Len("Florina") = 7
LTrim(), επιστρέφει μια συμβολοσειρά χωρίς τα αρχικά της κενά διαστήματα,
π.χ. LTrim(" Florina") = "Florina"
RTrim(), επιστρέφει μια συμβολοσειρά χωρίς τα τελικά της κενά διαστήματα,
π.χ. RTrim("Florina ") = "Florina"
Trim(), επιστρέφει μια συμβολοσειρά χωρίς τα αρχικά και τα τελικά της κενά διαστήματα,
π.χ. Trim(" Florina ") = "Florina"
String(), Δημιουργεί μια συμβολοσειρά με επανάληψη ενός καθορισμένου χαρακτήρα,
π.χ. String(3, "F") = "FFF"
UCase(), επιστρέφει μια συμβολοσειρά μ’ όλους τους χαρακτήρες της κεφαλαίους,
π.χ. UCase("Florina") = "FLORINA"
LCase(), επιστρέφει μια συμβολοσειρά μ’ όλους τους χαρακτήρες της πεζούς,
π.χ. LCase("Florina") = "florina"
InStr(), ψάχνει και επιστρέφει τη θέση μιας συμβολοσειράς μέσα σε μια άλλη.
π.χ. InStr(2, "Florina", "n") = 6
Αν δεν δώσουμε αρχική θέση εκκίνησης για την αναζήτηση, ερευνάται όλη η συμβολοσειρά. Αν δεν βρεθεί η συμβολοσειρά, επιστρέφεται η τιμή 0. Πρέπει να έχουμε υπόψη μας ότι η συνάρτηση InStr() ξεχωρίζει τα κεφαλαία από τα πεζά γράμματα.
Chr(), επιστρέφει τον χαρακτήρα που αντιστοιχεί σ’ έναν κωδικό ascii,
π.χ. Chr(65) = ’A’
Asc(), επιστρέφει τον κωδικό ascii που αντιστοιχεί σ’ έναν χαρακτήρα,
π.χ. Asc(‘A’) = 65
Str(), μετατρέπει έναν αριθμό σε συμβολοσειρά,
π.χ. Str(35) = "35"
Val(), μετατρέπει μια συμβολοσειρά σε αριθμό,
π.χ. Val("Arrianou 11") = 11
Ψάχνει να βρει τον πρώτο αριθμητικό χαρακτήρα.
IsNull(), εκχωρεί σε μια μεταβλητή την τιμή Yes αν το όρισμα είναι κενό (null) αλλιώς εκχωρεί την τιμή No.
π.χ. IsNull("Arrianou 11") = No
Χειρισμός Ημερομηνίας και Ώρας
Η μεταβλητή Date δέχεται έναν αριθμό κινητής υποιδιαστολής που αντιστοιχεί σ’ έναν συνδυασμό ημερομηνίας και ώρας. Το ακέραιο μέρος του αριθμού επιστρέφει την ημερομηνία και αντιστοιχεί στον αριθμό των ημερών από την 30 Δεκεμβρίου 1899.
Έτσι, το 1 αντιστοιχεί στην 31 Δεκεμβρίου 1899, το 2 στην 1 Ιανουαρίου 1900 και το 36526 στην 1 Ιανουαρίου 2000. Οι αρνητικοί αριθμοί αντιστοιχούν σε ημερομηνίες πριν από την 30 Δεκεμβρίου 1899 και είναι ακριβείς μέχρι το 1752 που άρχισε να χρησιμοποιείται το Γρηγοριανό ημερολόγιο. Οι ημερομηνίες στη Visual Basic φθάνουν μέχρι το έτος 9999.
Το δεκαδικό μέρος της τιμής ημερομηνίας/ώρας αντιστοιχεί στην ώρα, η οποία εκφράζεται σαν ποσοστό της ημέρας που έχει περάσει. Έτσι, η 6 π.μ. αντιστοιχεί στο 0.25, η 12 μεσημέρι στο 0.50 και τα μεσάνυχτα στο 0.
Ο συνδυασμός του ακεραίου και του δεκαδικού μέρους δίνει τη συνολική ημερομηνία και ώρα. Έτσι, το 36526.25 αντιστοιχεί στις 6 π.μ. της 1ης Ιανουαρίου 2000.
Με τις συναρτήσεις Day(), Month() και Year() μπορούμε να πάρουμε τις αντίστοιχες τιμές ημέρας, μήνα και έτους από μια τιμή ημερομηνίας/ώρας. Επίσης, με τις συναρτήσεις Hour(), Minute() και Second() μπορούμε να πάρουμε τις αντίστοιχες τιμές της ώρας, των λεπτών και των δευτερολέπτων.
Η συνάρτηση Weekday() επιστρέφει την ημέρα της εβδομάδας σαν αριθμό, όπου το 1 αντιστοιχεί στην Κυριακή, το 2 στη Δευτέρα κοκ. Η συνάρτηση DateValue() μετατρέπει μια συμβολοσειρά χαρακτήρων σε τιμή ημερομηνίας, όπως για παράδειγμα DateValue(“31 Dec, 1999”) που επιστρέφει την τιμή ημερομηνίας ‘31/12/99’.
Η αντίστοιχη συνάρτηση TimeValue() μετατρέπει μια συμβολοσειρά χαρακτήρων σε τιμή ώρας, όπως για παράδειγμα TimeValue(“6:00 PM”) και TimeValue(“18:00”) που επιστρέφουν και οι δύο την τιμή ώρας ’18:00:00’.
Οι συναρτήσεις DateSerial() και TimeSerial() επιστρέφουν αντίστοιχες τιμές αλλά δέχονται τρεις παραμέτρους : έτος, μήνα και ημέρα ή ώρα, λεπτά και δευτερόλεπτα, όπως για παράδειγμα DateSerial(1999, 12, 31) και TimeSerial(18, 0, 0) αντίστοιχα, για τις προηγούμενες τιμές.
Οι συναρτήσεις Date() και Time() επιστρέφουν τιμές ημερομηνίας/ώρας που αντιστοιχούν στην τρέχουσα ημερομηνία και ώρα συστήματος αντίστοιχα. Η συνάρτηση Now() επιστρέφει μια τιμή που αντιστοιχεί στην τρέχουσα ημερομηνία και ώρα. Και οι τρεις παραπάνω συναρτήσεις δεν δέχονται παραμέτρους.
Σαν συμπέρασμα, πρέπει να χρησιμοποιούμε τις συναρτήσεις DateValue() και TimeValue() όταν έχουμε να κάνουμε με ημερομηνίες που εισήχθησαν από τον χρήστη σαν συμβολοσειρές και τις συναρτήσεις DateSerial() και TimeSerial() όταν γνωρίζουμε τα ξεχωριστά τμήματα ημερομηνίας/ώρας.
Οι τιμές ημερομηνίας/ώρας που επιστρέφουν οι παραπάνω συναρτήσεις μπορούν να χρησιμοποιηθούν σαν αριθμοί στους υπολογισμούς αλλά αν τις εμφανίσουμε μέσα σε πλαίσια κειμένου, εμφανίζονται σαν συμβολοσειρές.
Οι Πίνακες (Arrays)
Για να ορίσουμε έναν πίνακα στη Visual Basic, δηλώνουμε τον τύπο δεδομένων του πίνακα και μέσα σε παρένθεση τον μεγαλύτερο δείκτη του, ως εξής :
Dim A(10) As Integer
Η παραπάνω δήλωση ορίζει έναν πίνακα με 11 ακέραια στοιχεία και με αρίθμηση από το 0 έως το 10.
Εξ ορισμού, η τιμή του πρώτου δείκτη είναι το 0, ενώ για να την ορίσουμε ίση με 1, πρέπει να κάνουμε την εξής δήλωση :
Option Base 1
Μπορούμε επίσης να ορίσουμε τον μικρότερο και τον μεγαλύτερο δείκτη του κάθε πίνακα χωριστά, ως εξής :
Dim B(1 To 10) As Integer
Dim MyYear(1990 To 2000) As Integer
Μπορούμε να ορίσουμε και πίνακες με περισσότερες από μία διαστάσεις, ως εξής :
Dim Names(1 To 10, 1 To 20) As String
Με τη δήλωση ReDim μπορούμε να δημιουργήσουμε δυναμικούς πίνακες, όπου ο μέγιστος δείκτης δεν ορίζεται με την αρχική δήλωση αλλά καθορίζεται αργότερα μέσα στο πρόγραμμα.
Μπορούμε να δημιουργήσουμε πίνακες χειριστηρίων, έτσι ώστε να τοποθετούμε παρόμοια χειριστήρια σ’ ένα παράθυρο. Για να γίνει αυτό, κάνουμε αντιγραφή και επικόλληση ενός χειριστηρίου και στην ερώτηση απαντάμε Ναι. Θα δημιουργηθεί ένα δεύτερο, ίδιο χειριστήριο που θα έχει την ίδια τιμή στην ιδιότητα Name και τιμή στην ιδιότητα Index ίση με 1, ενώ το αρχικό έχει τιμή στην ιδιότητα Index ίση με 0.
Αντί να τοποθετούμε πολλά χειριστήρια ένα-ένα, μπορούμε να δημιουργήσουμε το αρχικό, να θέσουμε την ιδιότητά του Index ίση με 0 και μετά με τη δήλωση Load να δημιουργήσουμε και τα υπόλοιπα χειριστήρια του πίνακα.
Τα χειριστήρια ενός πίνακα πρέπει να είναι του ίδιου τύπου και να έχουν την ίδια τιμή στην ιδιότητα Name, ενώ όλες οι άλλες ιδιότητες μπορούν να είναι διαφορετικές για κάθε χειριστήριο.
Οι Ενότητες(Modules)
Εκτός από τις διαδικασίες οι οποίες είναι καθοδηγούμενες από συμβάντα (events) και εκτελούνται μόνο όταν υπάρχει κάποια ενέργεια από τον χρήστη, υπάρχουν και διαδικασίες ή συναρτήσεις που είναι γενικού χαρακτήρα και γενικής χρήσης και μπορούν να κληθούν όχι από κάποιο συμβάν αλλά όταν θέλουμε να ελέγξουμε κάτι. Αυτός ο κώδικας πρέπει να τοποθετηθεί σε μια ενότητα (module).
Η ενότητα είναι ένα ξεχωριστό αρχείο με επέκταση .bas και περιέχει μια συλλογή από διαδικασίες γενικής χρήσης που είναι διαθέσιμες σ’ ολόκληρη την εφαρμογή. Οι διαδικασίες που περιέχονται στις ενότητες ονομάζονται διαδικασίες ενότητας ενώ εκείνες που περιέχονται στις φόρμες ονομάζονται διαδικασίες φόρμας.
Οι κανόνες σχετικά με την εμβέλεια (εύρος) χρήσης των διαδικασιών, δηλ. ποιες διαδικασίες είναι διαθέσιμες σ’ οποιοδήποτε σημείο της εφαρμογής, είναι οι εξής :
Κάθε διαδικασία επιπέδου ενότητας μπορεί να καλέσει μια οποιαδήποτε διαδικασία ενότητας από μια άλλη ενότητα αλλά δεν μπορεί να καλέσει καμία διαδικασία επιπέδου φόρμας.
Μια διαδικασία επιπέδου φόρμας μπορεί να καλέσει μια άλλη διαδικασία στην ίδια φόρμα ή σε μια άλλη ενότητα αλλά δεν μπορεί να καλέσει καμία διαδικασία από άλλη φόρμα.
Αυτό παρουσιάζεται γραφικά παρακάτω.

![]()
![]()

![]()
![]()

![]()
![]()

![]()
![]()
Αν δηλώσουμε μια διαδικασία επιπέδου ενότητας σαν Private και όχι σαν Public, θα είναι διαθέσιμη μόνο σε διαδικασίες της συγκεκριμένης ενότητας.
Για να δημιουργήσουμε μια νέα ενότητα κώδικα, επιλέγουμε Add Module από το μενού Project και κάνουμε κλικ στο εικονίδιο Module. Θα εμφανισθεί το γνωστό παράθυρο Code. Τα αρχεία ενότητας κώβδικα αποθηκεύονται με την επέκταση .bas. Οι ενότητες εμφανίζονται στο παράθυρο Project Explorer μαζί με τις φόρμες.
Για να προσθέσουμε μια ήδη υπάρχουσα ενότητα κώδικα, επιλέγουμε Add Module από το μενού Project και κάνουμε κλικ στην καρτέλα Existing. Μετά επιλέγουμε ένα αρχείο με επέκταση .bas.
Για να αφαιρέσουμε μια ενότητα από μια εργασία, κάνουμε κλικ στο όνομά της στο παράθυρο του Project Explorer και επιλέγουμε Remove από το μενού Project. Αν αφαιρέσουμε μια ενότητα από μια εργασία, το αρχείο .bas της ενότητας θα συνεχίσει να υπάρχει κανονικά στον δίσκο.
Για να προσθέσουμε μια διαδικασία γενικού σκοπού σε μια ενότητα κώδικα, εμφανίζουμε το παράθυρο Code της ενότητας και παρατηρούμε ότι το μόνο αντικείμενο που είναι διαθέσιμο για μια ενότητα κώδικα είναι το General.
Επιλέγουμε Add Procedure από το μενού Tools για να εμφανισθεί το παράθυρο Add Procedure. Στο πλαίσιο κειμένου Name γράφουμε το όνομα της διαδικασίας, από την ομάδα επιλογών Type επιλέγουμε τον τύπο της, δηλ. Sub ή Function, και από την ομάδα επιλογών Scope επιλέγουμε την εμβέλειά της, δηλ. Public ή Private.
Μόλις δώσουμε ένα όνομα για τη νέα διαδικασία, κάνουμε τις επιλογές μας και κλείσουμε το πλαίσιο διαλόγου, θα εμφανισθεί το παράθυρο Code με τις γραμμές Sub … End Sub ή Function … End Function ήδη συμπληρωμένες.
Για να επεξεργαστούμε αργότερα τη διαδικαδία, μπορούμε να την επιλέξουμε με το όνομά της από την πτυσσόμενη λίστα Procedure στο παράθυρο Code.
Για να προσθέσουμε μια διαδικασία γενικού σκοπού σε μια ενότητα φόρμας, ανοίγουμε το παράθυρο Code της φόρμας και επιλέγουμε General από την πτυσσόμενη λίστα Object, οπότε στην πτυσσόμενη λίστα Procedure εμφανίζονται όλες οι γενικού σκοπού διαδικασίες της φόρμας.
Με την επιλογή Add Procedure του μενού Tools μπορούμε να προσθέσουμε μια νέα διαδικασία όπως και προηγουμένως. Μόνο στο αντικείμενο General μπορούμε να προσθέσουμε γενικού σκοπού διαδικασίες. Όλα τα άλλα αντικείμενα μπορούν να έχουν μόνο διαδικασίες συμβάντων.
Οι διαδικασίες επιπέδου φόρμας είναι χρήσιμες για ρουτίνες που χρησιμοποιούνται περισσότερες από μία φορά σε μια φόρμα αλλά δεν μπορούν να χρησιμοποιηθούν από άλλη φόρμα ή ενότητα κώδικα.
Θα πρέπει να έχουμε υπόψη μας ότι μέσα σε μια ενότητα, οποιαδήποτε αναφορά σε χειριστήριο, θα πρέπει να καθορίζει το όνομα της φόρμας.
Δημόσιες και Μεταβιβαζόμενες Μεταβλητές
Οι μεταβλητές που δηλώνονται σε μια διαδικασία με τη δήλωση Dim είναι τοπικές μεταβλητές γι’ αυτή τη διαδικασία και δεν αναγνωρίζονται πουθενά αλλού στην εργασία. Οι μεταβλητές επιπέδου φόρμας που δηλώνονται στο τμήμα Declarations με τη δήλωση Private είναι διαθέσιμες στη φόρμα αλλά όχι σ’ άλλες φόρμες ή ενότητες.
Οι ενότητες έχουν επίσης ένα τμήμα Declarations, όπου μπορούμε να δηλώσουμε μεταβλητές επιπέδου ενότητας ή καθολικές μεταβλητές με την εξής μορφή :
Private Variable1 As String
Public Variable2 As Integer
Οι μεταβλητές Private είναι διαθέσιμες σ’ ολόκληρη την ενότητα αλλά όχι σ’ άλλες ενότητες ή φόρμες, ενώ οι μεταβλητές Public είναι διαθέσιμες σ’ ολόκληρη την εργασία.
Οι Σταθερές
Στο τμήμα Declarations μιας ενότητας μπορούμε να δηλώσουμε και σταθερές οι οποίες είναι διαθέσιμες σ’ όλες τις διαδικασίες της ενότητας. Μπορούμε επίσης να δηλώσουμε δημόσιες σταθερές που η τιμή τους να είναι διαθέσιμη σ’ όλες τις διαδικασίες της εργασίας, ως εξής :
Public Const Name = "Florina"
Public Const FPA = 18
Οι Συναρτήσεις (Functions)
Οι οριζόμενες από τον χρήστη συναρτήσεις δημιουργούνται παρόμοια με τις διαδικασίες. Επιλέγουμε Add Procedure από το μενού Tools και κάνουμε κλικ στο Function αντί στο Sub. Θα εμφανισθούν η πρώτη και η τελευταία γραμμή του κώδικα της συνάρτησης, δηλ. τα Function και End Function. Οι συναρτήσεις επιστρέφουν μία μόνο τιμή, η οποία υπολογίζεται σε μια μεταβλητή που έχει το ίδιο όνομα και τύπο δεδομένων με τη συνάρτηση.
Οι Λογικοί Τελεστές
Μπορούμε να συνδυάσουμε εκφράσεις συμβολοσειρών με τους εξής λογικούς τελεστές :
And, και οι δύο συνθήκες πρέπει να είναι αληθείς (σύζευξη).
Or, μια ή και οι δύο συνθήκες πρέπει να είναι αληθείς (διάζευξη).
Xor, μία μόνο από τις συνθήκες πρέπει να είναι αληθής (αποκλειστική διάζευξη).
Eqv, και οι δύο συνθήκες πρέπει να είναι αληθείς ή και οι δύο ψευδείς (ισοδυναμία).
Imp, είτε η πρώτη συνθήκη πρέπει να είναι ψευδής είτε η δεύτερη αληθής.
Η Δήλωση Do … Loop
Υπάρχουν οι εξής πέντε παραλλαγές της δήλωσης Do … Loop :
Do
δηλώσεις
Loop
Επαναλαμβάνεται μέχρι να βρεθεί μια δήλωση Exit Do ή μέχρι ο χρήστης να πατήσει τα πλήκτρα Control+Break.
Do While συνθήκη
δηλώσεις
Loop
Επαναλαμβάνεται όσο είναι αληθής η συνθήκη.
Do
δηλώσεις
Loop While συνθήκη
Επαναλαμβάνεται όσο είναι αληθής η συνθήκη. Η επανάληψη εκτελείται τουλάχιστον μία φορά.
Do Until συνθήκη
δηλώσεις
Loop
Επαναλαμβάνεται μέχρι να γίνει αληθής η συνθήκη.
Do
δηλώσεις
Loop Until συνθήκη
Επαναλαμβάνεται μέχρι να γίνει αληθής η συνθήκη. Η επανάληψη εκτελείται τουλάχιστον μία φορά.
Τα Μενού
Με τον επεξεργαστή μενού (menu editor) μπορούμε να προσθέσουμε πτυσσόμενα μενού σε φόρμες. Επιλέγουμε Menu Editor από το μενού Tools ή πατάμε τα πλήκτρα Control+E για να εμφανισθεί ο επεξεργαστής μενού. Το πάνω μισό του παραθύρου εμφανίζει τις ιδιότητες ενός στοιχείου του μενού και το κάτω μισό εμφανίζει όλα τα στοιχεία των μενού της τρέχουσας φόρμας.
Τα στοιχεία στα αριστερά του παραθύρου είναι τα ονόματα των μενού που θα εμφανισθούν στη γραμμή των μενού, ενώ οι επιλογές του κάθε μενού εμφανίζονται σε εσοχή μετά από το όνομα του μενού. Αν μια επιλογή έχει υπομενού, τότε οι επιλογές του υπομενού εμφανίζονται αμέσως μετά την επιλογή με επιπλέον εσοχή.
Το κλειδί πρόσβασης εισάγεται με τη χρήση του χαρακτήρα & στην ετικέτα (caption) ενός στοιχείου μενού και ενεργοποιείται με το πλήκτρο Alt, ενώ το κλειδί συντόμευσης το επιλέγουμε από την πτυσσόμενη λίστα Shortcut του παραθύρου του Menu Editor και ενεργοποιείται με συνδυασμό άλλων πλήκτρων (Shift, Control, Alt, F1-F12).
Τα χειριστήρια ενός μενού αντιδρούν στο συμβάν Click, το οποίο προκαλείται όταν κάνουμε κλικ στην επιλογή του μενού ή όταν πατάμε το αντίστοιχο κλειδί πρόσβασης ή συντόμευσης. Για τα μενού και τα υπομενού το συμβάν Click έχει σαν αποτέλεσμα την ανάπτυξή τους, ενώ για τις επιλογές των μενού θα πρέπει να γράψουμε μια αντίστοιχη διαδικασία Click.
Ο προσωρινός χώρος αποθήκευσης (Πρόχειρο, Clipboard) διαθετει τις εξής χρήσιμες μεθόδους :
Clear, διαγράφει τα περιεχόμενα του προχείρου.
SetText, αντιγράφει ένα κείμενο στο πρόχειρο.
GetText(), επιστρέφει τα περιεχόμενα του προχείρου.
Οι μέθοδοι του προχείρου μπορούν να χρησιμοποιηθούν σε συνδυασμό με τις εξής ιδιότητες των πλαισίων κειμένου :
SelText, συμβολοσειρά επιλεγμένων χαρακτήρων, κενή αν δεν έχει επιλεγεί κανένας χαρακτήρας.
SelLength, μήκος της επιλεγμένης συμβολοσειράς.
SelStart, τρέχουσα θέση δείκτη κειμένου, 0 αν βρίσκεται πριν από τον πρώτο χαρακτήρα.