Στο 2ο μέρος της εφαρμογής Video Location Manager θα ολοκληρώσουμε την κατασκευή όλων των επιμέρους φορμών και θα αρχίσουμε να κάνουμε τροποποιήσεις στον κώδικα του προγράμματος.
Αφού κατασκευάσαμε την κεντρική φόρμα (παράθυρο) με το βασικό μενού εντολών, ορισμένα κουμπιά για άμεση πρόσβαση στις βασικές λειτουργίες, ενώ παράλληλα ορίσαμε ότι οποιοδήποτε παράθυρο της εφαρμογής μας θα εμφανίζεται εντός των ορίων της κεντρικής φόρμας, δίνοντας από τη λίστα Properties στην παράμετρο IsMdiContainer την τιμή True, η κατασκευή των υπόλοιπων φορμών είναι σε πρώτη φάση μια απλή διαδικασία. Γίνεται με drag ‘n’ drop των στοιχείων που απαρτίζουν την εκάστοτε φόρμα από την toolbar.
Για να προσθέσουμε όμως νέες φόρμες, θα πρέπει να φτιάξουμε μια ιεραρχική δομή τους μέσω του παραθύρου Solution Explorer. Αφού φτιάξουμε την πρώτη εσωτερική φόρμα μας, μπορούμε πολύ εύκολα να προσθέσουμε άλλες φόρμες με τα ίδια controls, δίνοντας από το Solution Explorer Add > Add Inherited Form. Αυτό μας απαλλάσσει από τον κόπο να φτιάχνουμε τα ίδια controls σε φόρμες με παρόμοια λειτουργικότητα.
Αφού φτιάξουμε τη δομή των φορμών όπως τη θέλουμε, καλό είναι να χρησιμοποιήσουμε την εντολή Build>Rebuild Solution, προκειμένου να παγιωθεί η δομή και να είναι έτοιμη για την εισαγωγή κώδικα που θα τις συνδέει.
Τα στοιχεία των φορμών που θα εισαγάγουμε με απλό drag ‘n’ drop είναι τυπικά για κάθε εφαρμογή των Windows: πεδία κειμένου (text boxes) για εισαγωγή αλφαριθμητικών δεδομένων, ComboBoxes, που είναι λίστες με προκαθορισμένες τιμές, από τις οποίες επιλέγουμε αυτήν που επιθυμούμε, καθώς και Radio Buttons, τα οποία μας επιτρέπουν να επιλέγουμε μία ή περισσότερες τιμές από μια συγκεκριμένη λίστα αντικειμένων.
Aυτό το είδος control θα χρησιμοποιήσουμε για τη φόρμα αξιολόγησης μιας ταινίας, την οποία θα βαθμολογήσουμε ανάλογα με το πόσο μας άρεσε, με βαθμολογία από το 1 μέχρι το 5. Όλη η εργασία που θα κάνουμε με την κατασκευή των φορμών απλώς τις δημιουργεί και δεν τις συνδέει με τα αντίστοιχα μενού – ωστόσο δημιουργεί το τμήμα του κώδικα που ονομάζεται “Windows Form Designer generated code”.
Για να συνδέσουμε τις φόρμες με τα μενού, ώστε κάθε κλικ σε αυτά να προκαλεί την εμφάνιση του αντίστοιχου παραθύρου, πρέπει να φτιάξουμε ξεχωριστές ενότητες (procedures), τις οποίες θα μπορούμε να καλούμε ανά πάσα στιγμή. Μια τυπική procedure έχει ως εξής:

Από αυτήν τη ρουτίνα πρέπει να συγκρατήσουμε τρεις βασικές εντολές. Κατ’ αρχάς, τη δήλωση της procedure Private Sub ShowLocationManager, που σηματοδοτεί τη διαδικασία εμφάνισης της φόρμας. Έπειτα, τη δήλωση μεταβλητής Dim, με την οποία ορίζουμε τη μεταβλητή fLocationManager, η οποία, όταν καλείται, θα διαχειρίζεται τη φόρμα _LocationManager – στη συγκεκριμένη περίπτωση θα εμφανίζεται η φόρμα αυτή με την εντολή _LocationManager.Show().
Επίσης, πρέπει να σημειώσουμε και την εντολή _LocationManager.MdiParent = Me, με την οποία ορίζουμε ότι η εκάστοτε φόρμα (εδώ η _LocationManager) μπορεί να έχει “κάτω” από αυτήν άλλες φόρμες (“children”), στις οποίες θα εισάγονται δεδομένα, θα αποθηκεύονται πληροφορίες σε βάσεις δεδομένων κ.λπ. Τέλος, προσέξτε την απαραίτητη εντολή _LocationManager = New fLocationManager, με την οποία κάνουμε “initialization”, φορτώνοντας την εντολή στη μνήμη και ξεκινώντας τη διαδικασία.
Βέβαια, αυτές ακριβώς τις λειτουργίες δεν θα τις εξετάσουμε εδώ, αλλά στο επόμενο μέρος, οπότε θα αρχίσουμε να δίνουμε λειτουργικότητα στην εφαρμογή μας, γράφοντας τον απαραίτητο κώδικα, ώστε να επιτελούνται οι διαδικασίες της εισαγωγής δεδομένων (στοιχεία DVD, τοποθέτηση σε συγκεκριμένη θέση, αξιολόγηση ταινίας, αναζήτηση κ.ο.κ.).
Βήμα 1
Ολοκλήρωση φορμών εφαρμογής
Αρχίζουμε φτιάχνοντας μια στοιχειώδη ιεραρχική δομή των φορμών μας μέσω του Solution Explorer, κάνοντας δεξί κλικ στην κεντρική φόρμα Video Location Manager και δίνοντας Add>New Folder.
Βήμα 2
Σε κάθε φάκελο φτιάχνουμε τουλάχιστον μία φόρμα (ενδέχεται να υπάρχουν και άλλες). Κάνουμε, λοιπόν, δεξί κλικ πάνω στο φάκελο και επιλέγουμε Add>Add Windows Form.
Βήμα 3
Η πρώτη φόρμα μας περιέχει τις βασικές λειτουργίες. Κάθε μία από αυτές θα εκτελείται με buttons, τα οποία σύρουμε από την toolbar, ενώ το περιεχόμενό τους (π.χ. τίτλος) αλλάζει μέσω του πλαισίου Properties.
Βήμα 4
Τη βασική αυτή φόρμα την τοποθετήσαμε σκόπιμα στο φάκελο Generic. Βάσει αυτής της φόρμας, μπορούμε να φτιάξουμε άλλες, πιο πολύπλοκες, οι οποίες θα βασίζονται πάνω σε αυτήν.
Βήμα 5
Μία από αυτές είναι η φόρμα για DVDManager για τη διαχείριση των DVDs μας. Στο φάκελο DVD που φτιάξαμε, κάνουμε δεξί κλικ, επιλέγουμε Add>Add Inherited Form και επιλέγουμε το ανάλογο στοιχείο.
Βήμα 6
Κατόπιν, επιλέγουμε τη βασική φόρμα μας (fManager), η οποία περιέχει τα βασικά buttons, ώστε να μη χρειάζεται κάθε φορά να προγραμματίζουμε ξανά και ξανά τα ίδια βασικά controls.
Βήμα 7
Τώρα είναι η σειρά της συμπλήρωσης των άλλων controls. Κάνουμε drag ‘n’ drop τα υπόλοιπα στοιχεία, όπως τα πεδία κειμένου, στα οποία θα εισαγάγουμε τον τίτλο, την κατηγορία κάθε ταινίας κ.λπ.
Βήμα 8
Αφού τοποθετήσουμε και τα άλλα στοιχεία (π.χ. button “Αξιολόγηση”, πεδίο κειμένου με την περιγραφή της ταινίας κ.λπ.), επιλέγουμε View>tab Order για να ορίσουμε τη σειρά επιλογής με το πλήκτρο tab.
Βήμα 9
Μόλις κάνουμε την επιλογή, κάνουμε με τη σειρά κλικ σε κάθε control, ώστε ο χρήστης να μπορεί να κάνει focus σε κάθε ένα με τη σειρά, πατώντας το πλήκτρο tab για μεγαλύτερη ευκολία.
Βήμα 10
Κάνοντας διπλό κλικ στα μενού των εντολών ανοίγουμε το παράθυρο συγγραφής κώδικα όπου γράφουμε τις ρουτίνες που προκαλούν την εμφάνιση κάθε φόρμας.
Βήμα 11
Επαναλαμβάνοντας αυτά τα βήματα, φτιάχνουμε και τις υπόλοιπες φόρμες. Τον επόμενο μήνα θα δώσουμε “ζωή” σε αυτές τις φόρμες, ώστε να επιτελούν τις λειτουργίες για τις οποίες προορίζονται.