ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Θέμα : MULTIMEDIA GIS Καθηγητής : κ. Γ. Ευαγγελίδης Μεταπτυχιακοί φοιτητής : Σιατραβάνης Αθανάσιος Α.Μ. 1/98 Σεπτέμβριος 2000 Θεσσαλονίκη
1 ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ... 1 Εισαγωγή... 2 Εναλλακτικοί τρόποι ανάπτυξης της εφαρμογής...3 GIS εφαρμογές... 4 Παρουσίαση εργασίας...6 Παρουσίαση και εξήγηση του κώδικα... 13
2 Εισαγωγή Η διπλωματική εργασία Multimedia GIS έχει σκοπό την επεξεργασία και παρουσίαση των γεωγραφικών πληροφοριών με τη χρηση πολυμέσων. Πιο συγκεκριμένα γίνεται επεξεργασία του χάρτη της Καλιφόρνιας. Έτσι, ο χρήστης, ανάλογα με τη γεωγραφική περιοχή που επιλέγει (Βόρεια, Ανατολική, Δυτική, Κεντρική, Νότια Καλιφόρνια) μπορεί να δει τους νομούς της επιλογής του ( 1 επίπεδο ανάλυσης ). Στη συνέχεια επιλέγοντας ένα νομό παρουσιάζονται πληροφορίες για τα σχολειά, τα αεροδρόμια, τα νοσοκομεία, τις λίμνες, τις εκκλησίες, τα πάρκα και τα λιμάνια του νομού ( 2 επίπεδο ανάλυσης ). Τέλος επιλέγοντας μια συγκεκριμένη πληροφορία από τις παραπάνω κατηγορίες βλέπει την επιλογή του στο χάρτη, καθώς φωτογραφίες και video αν υπάρχει ( 3 επίπεδο ανάλυσης). Για τη συγγραφή της εργασίας χρησιμοποιήθηκε : Visual Basic 6.0 πάνω στην οποία «οικοδομήθηκε» η εργασία, δημιουργώντας το interface, σύνδεση με εξωτερικούς πίνακες βάσεων δοδομένων και χρήση όλων των πολυμεσικών δυνατοτήτων που παρέχει η γλώσσα ( αναπαραγωγή ήχου και video). Map objects 2.0, εξειδικευμένες βιβλιοθήκες που επιτρέπουν την απεικόνιση και επεξεργασία των χαρτών μέσα από το περιβάλλον της Visual Basic καθώς και Photoshop 5.0 για την επεξεργασία των εικόνων. Απαραίτητες προϋποθέσεις για να «τρέξει» το πρόγραμμμα είναι: Pentium II στα 166 Ανάλυση οθόνης 800 X 600.
3 Εναλλακτικοί τοόποι ανάτττυετκ me q>gpuovhc Σήμερα στην αγορά, κυκλοφορούν πολλά «πακέτα» για την δημιουργία και ανάπτυξη παρόμοιων εφαρμογών. Ένας τέτοιος εναλλακτικός τρόπος είναι με τη χρήση του Director 7.0 και Map objects 2.0. To Director είναι ένα εξιδεικευμένο πολυμεσικό πακέτο το οποίο ενσωματώνει και εκμεταλλεύεται τις λειτουργίες των ActiveX controls. Στα θετικά του «πακέτου» είναι η δημιουργία καλύτερου interface με τη χρήση ειδικών εφέ καθώς και δημιουργία HTML αρχείων. Έχει όμως πρόβλημα στο να ενσωματώσει όλες τις λειτουργίες και ιδιότητες των ActiveX control. Χρήση της γλώσσας areview avenue.h γλώσσα avenue επιτρέπει στον χρήστη να δημιουργεί επαναλαμβανόμενες διαδικασίες καθώς και δυναμικά κουμπιά μέσα από το περιβάλλον του areview και να επικοινωνεί το areview με άλλες εφαρμογές (π.χ MS-WORD) για αυτόματη εξαγωγή αναφορών. Μειονεκτήματα του συνδυασμού areview και avenue είναι ότι δεν μπορεί να χρησιμοποιηθεί η avenue έξω από το περιβάλλον του areview, δεν δημιουργεί κλάσεις και δεν εξάγει αντικείμενα του areview και δεν έχει περαιτέρω δυνατότητες για πολυμεσικές εφαρμογές. Σε συνδυασμό με μια γλώσσα αντικειμενοστρεφή προγραμματισμού αποκτά και τα πολυμεσικά χαρακτηριστικά που του λείπουν. Χρήση των arc objects σε συνδυασμό με μια γλώσσα αντικειμενοστρεφή προγραμματισμού, ή εξιδεικευμένων πολυμεσικών «πακέτων» για τη διαχείριση των ActiveX controls που αυτά εξάγουν. Συνδυασμός areview με ενσωμάτηση επεκτάσεων (Web View) για Web presentation (http://www.spatial-online.com/spatiai/product.asp?pf_id=58) και χρήση του Flash Macromedia για πολυμεσική δικτυακή παρουσίαση.
4 GIS εφαριιογές Στην αγορά και στο Internet υπάρχουν αρκετές GIS εφαρμογές: Μία εφαρμογή που κυκλοφόρησε ήταν ο «Οδηγός πόλης Θεσσαλονίκης» που έβρισκε τη συντομότερη διαδρομή. Ο χρήστης επέλεγε το σημείο που βρίσκεται ( αφετηρία ) και το σημείο προορισμού και η εφαρμογή του έδειχνε τη συντομότερη διαδρομή για να φτάσει στον προορισμό του. Εφαρμογή υπολογισμού φόρου οικοπέδων για την επαρχία Gatham στη Βόρεια Καρολίνα που επιτρέπει την παρουσίαση, δημιουργία και εκτύπωση χαρτών. (http://www.emapper.com/chatham/map.htm) Εφαρμογή που χρησιμοποιεί η αστυνομική αρχή του Illinois και παρέχει στατιστικές πληροφορίες για τις περιοχές αυτοκινητιστικών ατυχημάτων και των ί - r ι»- t- σεξουαλικών εγκλημάτων. (http://samnet.isp.state.il.us/isp/samintro.htm) Εφαρμογή που παρέχει πληροφορίες για την θέση των πλοίων σε πραγματικό χρόνο, (http://www.starship.stem.de/)
5 Εφαρμογή που παρέχει πληροφορίες για οικιστικές, επιχειρηματικές και κυβερνητικές τοποθεσίες στην Αυστραλία, (http://www.whitepages.com.au/) Εφαρμογή που δίνει πληροφορίες για τις τράπεζες, νοσοκομεία και βενζινάδικα του Ισραήλ και εύρεση διαδρομής μεταξύ δύο σημείων. ( http://www.emap.co.il/) Menashe Emek.Khefer ^ Lev.ha-Sharon Tel a /Iv-[va to State Jurisd Khevel M odi'in Mate E M odi'in Gezer Ashdod Jerusalem (Y Asnaoa M Yehuda Khof Ashkelon Gush.E Εφαρμογή 7ΐου παρέχει πληροφορίες για κάθε επαρχία την Νότιας Αυστραλίας. (http://www.planning.sa.gov.au/maps_online/) Εφαρμογή που παρέχει πληροφορίες για όλα τα σχολεία του Oakland καθώς και αεροφωτογραφίες για την πόλη. (http://mapstacker.ousd.kl2.ca.us/welcome.htm)
6 Εφαρμογή που παρέχει πληροφορίες για τα χαρακτηριστικά των οικοπέδων και τον φόρο της επαρχίας Lucas στο Ohio. (http://www.co.lucas.oh.us/real_estate/areis_online/logon.asp) Εφαρμογή που παρέχει πληροφορίες για τις επιχειρηματικές ζώνες και τα δημογραφικά στοιχεία του Pittsburg. ( http://209.21.13.32/pittsburg ) Παρουσίαση εργασίας Η εργασία αποτελείται από τρεις φόρμες. Στην πρώτη φόρμα που είναι και η αρχική σελίδα περιέχονται πληροφορίες για τον τίτλο της εργασίας, το μεταπτυχιακό τμήμα, τον υπεύθυνο καθηγητή καθώς και την εξεταστική επιτροπή, όπως φαίνεται και στην εικόνα 1. Με το ξεκίνημα της εφαρμογής αρχίζει να εκτελείται ένα wav αρχείο το οποίο αποτελεί και την μουσική επένδυση της εφαρμογής.
7 ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ : MULTIMEDIA CIS ΜΕΤΑΠΤ. ΦΟΙΤΗΤΗΣ ; ΣΙΛΓΡΛΒΑΝΗΣ ΑΘΑΝΑΣΙΟΣ Παρακαλώ Περιμένετε... Εικόνα 1 Εισαγωγική φόρμα Μπαίνοντας στο πρόγραμμα, βλέπουμε στην αριστερή πλευρά της οθόνης μία πυξίδα με τα τέσσερα σημεία του ορίζοντα (Βορράς, Ανατολή, Νότος, Δύση, καθώς και το γράμμα C που συμβολίζει την Κεντρική Καλιφόρνια). Στη δεξιά πλευρά της οθόνης βρίσκεται ο χάρτης της Καλιφόρνιας ενώ στο κάτω μέρος υπάρχουν τα κουμπιά πλοήγησης για το πρόγραμμα.
8 Εικόνα 2 Σελίδα επιλογής γεωγραφικού διαμερίσματος της Καλιφόρνιας Έτσι πατώντας στο βελάκι που δείχνει προς τα αριστερά το πρόγραμμα γυρνάει το χρήστη ένα βήμα πίσω. Αν πατηθεί η πόρτα το πρόγραμμα τερματίζεται, ενώ αν πατηθεί το μεσαίο βέλος ο χρήστης επιστρέφει στην αρχική σελίδα που είναι η εικόνα 2. Στο σημείο αυτό ο χρήστης θα πρέπει να επιλέξει κάποιο σημείο του ορίζοντα, έστω το γράμμα Ε που συμβολίζει την ανατολή. Τότε στην οθόνη εμφανίζεται ο χάρτης της ανατολικής Καλιφόρνιας και οι επαρχίες της όπως φαίνεται στην εικόνα 3.
9 Εικόνα 3 Επιλογή επαρχίας Σ'αυτό το σημείο μπορεί να επιλέξει μία από τις επαρχίες. Έστω ότι επιλέγει την επαρχία Sierra. Τότε βλέπει στο χάρτη της Καλιφόρνιας την επαρχία που επέλεξε καθώς και τις εξής κατηγορίες τις οποίες μπορεί να επιλέξει (εικόνα 4): Σχολεία Αεροδρόμια Νοσοκομεία Εκκλησίες Λίμνες Λιμάνια Πάρκα
10 Εικόνα 4 Επιλογή κατηγορίας Συνεχίζοντας τη διερεύνηση της Καλιφόρνιας και επιλέγοντας την κατηγορία λίμνες τότε έχει τη δυνατότητα να δει στην οθόνη τις λίμνες της επαρχίας Sierra όπως δείχνει η εικόνα 5.
11 Περιοχή Όνομα 1 Coburn Lai. < Gold Lake Onion Valle;, B '.jo Note Mountain Jc'ahur^v Lake Duck. Soup Fond Gold Lai i old Laki Gold Laki Εικόνα 5 Επιλογή εγγραφής Στον πίνακα δεξιά παρουσιάζονται τα ονόματα των λιμνών και σε ποιες περιοχές της επαρχίας Sierra βρίσκονται ενώ παράλληλα έχει και την οπτική παρουσίασή τους στο χάρτη σε μορφή κουκίδων. Σ' αυτό το σημείο ο χρήστης έχει τη δυνατότητα να επέμβει μέσα στο χάρτη. Έτσι μπορεί να επιλέξει με το αριστερό κλικ του ποντικιού μια περιοχή μέσα στο χάρτη που του ενδιαφέρει και να τη μεγεθύνει όσες φορές θέλει, ενώ με το πάτημα του δεξιού κουμπιού του «ποντικιού» επαναφέρει το χάρτη στην αρχική προβολή. Επιπλέον μπορεί να επιλέξει κάποια εγγραφή μέσα από τον πίνακα (στην προκειμένη περίπτωση το όνομα μιας λίμνης ) και να δει ταυτόχρονα και τη φωτογραφία της. Έτσι επιλέγοντας την λίμνη Dugan Pond στην περιοχή Sierra City βλέπει ταυτόχρονα την φωτογραφία της ή το video αν υπάρχει (εικόνα 6).
12 Περιοχή Όνομα $ at Hey Haypret: Gold Lak Deer Lake Orton Valley Blue No:e Mountain i Delahuntv Lake A ------ I Due. Soup - - j Sierra City Due: a' Ford Gold Lai Gold Lakt Haven Lake Gold Lak ί Hawley Laue GoidLak Lillie Deer La': Εικόνα 6 Απεικόνιση της εγγραφής με τη φωτογραφία
13 Παρουσίαση και εξήγηση του κώδικα Ο κώδικας της πρώτης και εισαγωγικής σελίδας είναι ο εξής : Private Sub Form_Click() Form2.Show Με το πάτημα του ποντικιού να γίνεται unload η φόρμα Unload Forml Private Sub Form_Load() For n = 0 To 9 Φορτώνει τις φωτογραφίες για Set NotiaPics(n) = LoadResPicture(149 + n, 0) την Νότια Καλιφόρνια. Next n For a = 0 To 6 Φορτώνει τις φωτογραφίες για Set AnatolikhPics(a) = LoadResPicture(142 + a, 0) την Ανατολική Καλιφόρνια. Next a For b = 0 To 8 Φορτώνει τις φωτογραφίες για Set BoreiaPics(b) = LoadResPicture(101 + b, 0) την Βόρεια Καλιφόρνια. Next b For d = 0 To 10 Φορτώνει τις φωτογραφίες για Set DytikhPics(d) = LoadResPicture(l 10 + d, 0) την Δυτική Καλιφόρνια. Next d
14 For k = 0 To 20 Φορτώνει τις φωτογραφίες για Set KentrikhPics(k) = LoadResPicture(121 + k, 0) την Κεντρική Καλιφόρνια. Next k Forml.BackColor = RGB(0, 0, 128) Labell.Left = 13000 Label2.Left = 13000 Label3.Left = 13000 Καθορίζει το χρώμα της φόρμας Όλα τα label τα όριζω να βρίσκονται σε μια συγκεκριμένη θέση στην οθόνη, στην θέση που έχει τιμή 13000. LabeM.Left = 13000 Label5.Left = 13000 Status = 0 Forml.MousePointer =11 Ο δείκτης του ποντικιού σε μορφή κλεψύθρας ι$ $$##$$$$$$$$$ MMControll.Notify = False MMControll.Wait = True Δήλωση της διαδρομής του MMControll.Shareable = False αρχείου που θέλουμε ν MMControll.DeviceType = "Waveaudio" ανοίξουμε και να MMControll.FileName = DbfFolder & "\ixos\welcom98.wav" αναπαράγουμε, MMControll.Command = "open" MMControll.Command = "play" άνοιγουμε τη συσκευή και δίνουμε την εντολή να Εκτελέσει το αρχείο. Όταν φορτώνεται η φόρμα, φορτώνονται ταυτόχρονα κι ένα αρχείο που περιέχει τις εικόνες από τις πολιτείες της Καλιφόρνιας. Private Sub image l_click() Call Form Click
15 Με την χρήση των παρακάτω timer επιτυγχάνω κίνηση των label από αριστερά προς τα δεξιά. Η λειτουργία των timer είναι η ίδια για όλα τα label, γι αυτό και θα εξηγήσω τη λειτουργία του ενός. Ο κάθε χρονοδιακόπτης λειτουργεί σύμφωνα με κάποιο χρονικό διάστημα που του έχω ορίσει (0,03 sec ). Private Sub Timerl_Timer() Label 1. Visible = False If Label5.Left <= 3000 Then Label 1. Visible = True Label 1.Left = Label 1.Left - 300 If Labell.Left <= 200 Then Timer 1.Enabled = False To labell δεν είναι ορατό. Όταν το label5 που ήδη κινείται φτάσει στη θέση 3000, τότε κάνω το labell ορατό.το labell που βρίσκεται στη θέση 13000 αρχίζει να κινείται προς τα αριστερά διανύοντας απόσταση ίση με 300 twips κάθε φορά που λειτουργεί ο Timer. Μόλις φτάσει στη θέση 200 End If απενεργοποιώ τον timer. End If Private Sub Timer2_Timer() Label2.Visible = False If Labell.Left <= 200 Then Label2.Visible = True Label2.Left = Label2.Left - 300 If Label2.Left <= 200 Then Timer2. Enabled = False End If End If
16 Private Sub Timer3_Timer() Label3. Visible = False If Label2.Left <= 200 Then Label3. Visible = True Label3.Left = Labe 13.Left - 300 If LabeB.Left <= 200 Then Timer3.Enabled = False Label6. Visible = True Wait.Enabled = True End If End If Private Sub Timer4_Timer() Label4.Left = LabeW.Left - 300 If Label4.Left <= 4500 Then Timer4. Enabled = False End If
17 Private Sub Timer5_Timer() Label5. Visible = False If LabeW.Left <= 4500 Then Label5.Visible = True Label5.Left = Label5.Left - 300 If Label5.Left <= 3000 Then Timer5.Enabled = False End If End If Private Sub Wait_Timer() WaitTime = WaitTime + Wait.Interval If WaitTime > 5 Then Wait.Enabled = False Call FormClick Exit Sub End If Ο κώδικας από το κυρίως πρόγραμμα είναι: Private Sub Compass_Click(Index As Integer)
18 '************** jxqjj* ************************************************** MMControll.Notify = False MMControll.Wait -- True MMControll.Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" I********* ej?e ******************************************************** Set objname = img efel.enabled = True δηλώνει το object ενεργοποιεί τον timer για το efe μέχρι να Do Until efel.enabled = False DoEvents Loop Call ResetEfe(objname, 1530, 4095) >****************************** καλεί τη συνάρτηση ResetEfe από το module. I mage 1.Enabled = True ViewStatus = 1 Call VisibleFalseFrames Select Case Index Case 0 Στο σημείο αυτό επιλέγει από την πυξίδα τα 5 σημεία του ορίζοντα Βόρεια Καλιφόρνια Geo 1(1). Visible = True Status = 1 To frame Geo 1(1) γίνεται ορατό και είναι η Βόρεια Καλιφόρνια Case 1 Ά Geo 1(2). Visible = True Status = 2 To frame Geo 1(2) γίνεται ορατό και είναι η Ανατολική Καλιφόρνια
19 Case 2 TNT Geo 1(3). Visible = True Status = 3 Case 3 To frame Geo 1(3) γίνεται ορατό και είναι η Νότια Καλιφόρνια 'D Geo 1(4). Visible = True Status = 4 Case 4 To frame Geo 1(4) γίνεται ορατό και είναι η Δυτική Καλιφόρνια 'Κ Geo 1(5).Visible = True Status = 5 To frame Geol(5) γίνεται ορατό και είναι η Κεντρική Καλιφόρνια End Select If**************************************************** **************** Private Sub Category_Click(Index As Integer) videobutton. Visible = False Call VisibleFalseFrames ViewStatus = 3 Labell5.Left = Mapl.Width 12 + Mapl.Left - (Labell5.Width/ 2) MSFlexGrid2. C lear MSFlexGrid2.Cols = 2 MSFlexGrid2.Rows = 2 Photo.Visible = False Categorylndex = Index Select Case Index Στο σημείο αυτό επιλέγει τις κατηγορίες
20 Case 0 'sxolia Labell 3.Caption = "Σχολεία" QueryString = "school" Επιλέγει τα σχολεία και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων Case 1 'aerodromia Labell 3.Caption = "Αεροδρόμια" Επιλέγει τα αεροδρόμια και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων QueryString = "airport" Case 2 'nosokomia Labell 3.Caption = "Νοσοκομεία" QueryString = "hospital" Επιλέγει τα νοσοκομεία και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων Case 3 'eklisies Labell 3. Caption = "Εκκλησίες" QueryString = "church" Επιλέγει τις εκκλησίες και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων Case 4 'limnes Labell 3.Caption = "Λίμνες" QueryString = "lake" Επιλέγει τις λίμνες και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων Case 5 'limania Labell 3.Caption = "Λιμάνια" QueryString = "harbor" Επιλέγει τα λιμάνια και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων Case 6 'parka Label 13.Caption = "Πάρκα" QueryString = "park" Επιλέγει τα πάρκα και καλεί την συνάρτηση για τον εντοπισμό των στοιχείων End Select Geo 1(6). Visible = False L.Show
21 φφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφ Private Sub efel_timer() Call efe_l(objname, 100) καλεί την συνάρτηση efel ft******************************************************************** Private Sub EparxiaA_Click(Index As Integer) *************** ixos* MMControll.Notify = False MMControll.Wait = True MMControll.Shareable = False MMControll. DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" I******************************************************************** If Not DbfFolder = Chr(z) + "Acalifornia" Then MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Exit Sub Ελέγχει για το CD και για τον κατάλογο California End If ********** gfg **************** Set objname = img3 efel.enabled = True
Do Until efel.enabled = False DoEvents Loop Call ResetEfe(objname, 1530, 4095) '****************************** ViewStatus = 2 Call VisibleFalseFrames Geo 1(6). Visible = True BaseControler.DatabaseName = DbfFolderQ Συνδέουμε το control βάσεως Img7. Visible = False Select Case Index Case 0 EparxiaName.Caption = "Inyo" Label 15.Caption = "Inyo" BaseControler.RecordSource = "iny" Img7.Picture = AnatolikhPics(Index) δεδομένων της VB6 με τον κατάλογο που περιέχει τους πίνακες. Δίνει στα labels EparxiaName και labell 5 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Inyo. Φορτώνει την ανάλογη εικόνα. Case 1 EparxiaName.Caption = "El Dorado" Labell 5.Caption = "El Dorado" BaseControler.RecordSource = "eld" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και labell 5 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το El Dorado. Φορτώνει την ανάλογη εικόνα. Case 2 EparxiaName.Caption = "Alpine" Label 15.Caption = "Alpine" BaseControler.RecordSource = "alp" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και label 15 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Alpine. Φορτώνει την ανάλογη εικόνα. Case 3 EparxiaName.Caption = "Nevada" Labell 5.Caption = "Nevada" BaseControler.RecordSource = "nev" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και labell 5 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Nevada. Φορτώνει την ανάλογη εικόνα. Case 4
23 EparxiaName.Caption = "Mono" Labell 5.Caption = "Mono" BaseControler.RecordSource = "mno" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και label 15 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Mono. Φορτώνει την ανάλογη εικόνα. Case 5 EparxiaName.Caption = "Sierra" Labell 5.Caption = "Sierra" BaseControler.RecordSource = "sie" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και labell 5 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Sierra. Φορτώνει την ανάλογη εικόνα. Case 6 Labell 5.Caption = "Placer" EparxiaName.Caption = "Placer" BaseControler.RecordSource = "pla" Img7.Picture = AnatolikhPics(Index) Δίνει στα labels EparxiaName και label 15 το ανάλογο όνομα και ανοίγει τον dbf πίνακα για το Placer. Φορτώνει την ανάλογη εικόνα. End Select Img7. Visible = True Ελέγχει πόσα layers υπάρχουν στο map object If Mapl.Layers.Count = 2 Then κι αν είναι πάνω από δύο, αφαιρεί το ένα και Mapl.Layers.Remove 0 τοποθετεί το ανάλογο layer. Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers. Add Query Layer Else Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers.Add QueryLayer End If
24 Private Sub EparxiaB_Click(Index As Integer) '*ill*ill*ft********ixos******************************** ******************* MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" I******************************************************************** If Not DbfFolder = Chr(z) + "Acalifornia" Then MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Exit Sub End If I********* g-jg **************** Set objname = img2 efel. Enabled = True Do Until efel.enabled = False DoEvents Loop Call ResetEfe(objname, 1530,4095) t****************************** ViewStatus = 2 Call VisibleFalseFrames Geo 1(6). Visible = True
25 BaseControler.DatabaseName = DbfFolder() Img7.Visible = False Select Case Index Case 0 EparxiaName.Caption = "Humboldt" Labell 5.Caption = "Humboldt" BaseControler.RecordSource = "hum" Img7.Picture = BoreiaPics(Index) Case 1 EparxiaName.Caption = "Del Norte" Labell 5.Caption = "Del Norte" BaseControler.RecordSource = "dnt" Img7.Picture = BoreiaPics(Index) Case 2 EparxiaName.Caption = "Modoc" Labell 5.Caption = "Modoc" BaseControler.RecordSource = "mod" Img7.Picture = BoreiaPics(Index) Case 3 EparxiaName.Caption = "Lassen" Labell 5.Caption = "Lassen" BaseControler.RecordSource = "las" Img7.Picture = BoreiaPics(Index) Case 4 EparxiaName.Caption = "Shasta" Labell 5.Caption = "Shasta" BaseControler.RecordSource = "sha" Img7.Picture = BoreiaPics(Index) Case 5 EparxiaName.Caption = "Plumas" Labell 5.Caption = "Plumas" BaseControler.RecordSource = "plu" Img7.Picture = BoreiaPics(Index)
26 Case 6 EparxiaName.Caption = "Trinity" Labell 5.Caption = "Trinity" BaseControler.RecordSource = "tri" Img7.Picture = BoreiaPics(Index) Case 7 EparxiaName.Caption = "Tehama" Label 15. Caption = "Tehama" BaseControler.RecordSource = "teh" Img7.Picture = BoreiaPics(Index) Case 8 EparxiaName.Caption = "Siskiyou" Labell 5.Caption = "Siskiyou" BaseControler.RecordSource = "sis" Img7.Picture = BoreiaPics(Index) End Select Img7. Visible = True If Mapl.Layers.Count = 2 Then Mapl.Layers.Remove 0 Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Map 1.Layers.Add QueryLayer Else Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Map 1.Layers. Add QueryLayer End If
27 Private Sub EparxiaD_Click(Index As Integer) MMControll.Notify = False MMControll.Wait = True MMControll.Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" If Not DbfFolder = Chr(z) + "Acalifomia" Then MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Exit Sub End If Set objname = img5 efel.enabled = True Do Until efel.enabled = False DoEvents Loop Call ResetEfe(objname, 1530, 4095) ViewStatus = 2 Call VisibleFalseFrames Geo 1(6). Visible = True BaseControler.DatabaseName = DbfFolderQ
28 Img7.Visible = False Select Case Index Case 0 EparxiaName.Caption = "Contra Costa" Labell 5.Caption = "Contra Costa" BaseControler.RecordSource = "cca" Img7.Picture = DytikhPics(Index) Case 1 EparxiaName.Caption = "Alameda" Labell 5.Caption = "Alameda" BaseControler.RecordSource = "ala" Img7.Picture = DytikhPics(Index) Case 2 EparxiaName.Caption = "Marin" Labell 5.Caption = "Marin" BaseControler.RecordSource = "mrn" Img7.Picture = DytikhPics(Index) Case 3 EparxiaName.Caption = "Monterey" Labell 5.Caption = "Monterey" BaseControler.RecordSource = "mnt" Img7.Picture = DytikhPics(Index) Case 4 EparxiaName.Caption = "Mendocino" Labell 5.Caption = "Mendocino" BaseControler.RecordSource = "men" Img7. Picture = DytikhPics(Index) Case 5 EparxiaName.Caption = "San Francisco" Labell 5.Caption = "San Francisco" BaseControler.RecordSource = "sfo" Img7.Picture = DytikhPics(Index) Case 6
29 EparxiaName. Caption = "Santa Cruz" Labell5.Caption = "Santa Cruz" BaseControler.RecordSource = "scr" Img7.Picture = DytikhPics(Index) Case 7 EparxiaName.Caption = "San Benito" Label 15.Caption = "San Benito" BaseControler.RecordSource = "sbt" Img7.Picture = DytikhPics(Index) Case 8 EparxiaName.Caption = "Sonoma" Labell 5.Caption = "Sonoma" BaseControler.RecordSource = "son" I mg7. Picture = DytikhPics(Index) Case 9 EparxiaName.Caption = "San Mateo" Labell 5.Caption = "San Mateo" BaseControler.RecordSource = "smt" Img7.Picture = DytikhPics(Index) Case 10 EparxiaName.Caption = "Santa Clara" Label 15.Caption = "Santa Clara" BaseControler.RecordSource = "scl" Img7.Picture = DytikhPics(Index) End Select Img7.Visible = True MAP OBJ CODE 'Mapl. Visible = False IfMapl.Layers.Count = 2 Then Mapl.Layers.Remove 0 Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers. Add Query Layer
30 Else Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Map 1.Layers.Add QueryLayer End If Private Sub EparxiaK_Click(Index As Integer) 1$ $ $ $ $ $ + $ $ $ 1X0 S3^ * ^ ^ ^ ^ ^ **** ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ **** ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" IfNot DbfFolder = Chr(z) + "Acalifomia" Then MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Exit Sub End If '********* gfg *************** Set objname = img6 efel.enabled = True Do Until efel.enabled = False
31 DoEvents Loop Call ResetEfe(objname, 1530, 4095) ViewS tat us = 2 Call VisibleFalseFrames Geo 1(6). Visible = True BaseControler.DatabaseName = DbfFolder() Img7. Visible = False Select Case Index Case 0 EparxiaName.Caption = "Kings" Label 15.Caption = "Kings" BaseControler.RecordSource = "kng" Img7.Picture = KentrikhPics(Index) Case 1 EparxiaName.Caption = "Glen" Label 15.Caption = "Glen" BaseControler.RecordSource = "gle" Img7.Picture = KentrikhPics(Index) Case 2 EparxiaName.Caption = "Fresno" Label 15.Caption = "Fresno" BaseControler.RecordSource = "fre" Img7. Picture = KentrikhPics(Index) Case 3 EparxiaName.Caption = "Colusa" Labell 5.Caption = "Colusa" BaseControler.RecordSource = "col" Img7.Picture = KentrikhPics(Index) Case 4 EparxiaName.Caption = "Calaveras" Labell 5.Caption = "Calaveras"
32 BaseControler.RecordSource = "cal" Img7.Picture = KentrikhPics(Index) Case 5 EparxiaName.Caption = "Butte" Label 15.Caption = "Butte" BaseControler.RecordSource = "but" Img7.Picture = KentrikhPics(Index) Case 6 EparxiaName.Caption = "Amador" Labell 5.Caption = "Amador" BaseControler.RecordSource = "ama" Img7.Picture = KentrikhPics(Index) Case 7 EparxiaName.Caption = "Napa" Label 15.Caption = "Napa" BaseControler.RecordSource = "nap" Img7.Picture = KentrikhPics(Index) Case 8 EparxiaName.Caption = "Mariposa" Labell 5.Caption = "Mariposa" BaseControler.RecordSource = "mpa" Img7. Picture = KentrikhPics(Index) Case 9 EparxiaName.Caption = "Merced" Labell 5. Caption = "Merced" BaseControler.RecordSource = "mer" Img7. Picture = KentrikhPics(Index) Case 10 EparxiaName.Caption = "Madera" Labell 5.Caption = "Madera" BaseControler.RecordSource = "mad" Img7.Picture = KentrikhPics(Index) Case 11 EparxiaName.Caption = "Lake"
33 Label 15.Caption = "Lake" BaseControler.RecordSource = "lak" Img7.Picture = KentrikhPics(Index) Case 12 EparxiaName.Caption = "Sacramento" Labell 5.Caption = "Sacramento" BaseControler.RecordSource = "sac" Img7.Picture = KentrikhPics(Index) Case 13 EparxiaName.Caption = "Yuba" Labell 5.Caption = "Yuba" BaseControler.RecordSource = "yub" Img7. Picture = KentrikhPics(Index) Case 14 EparxiaName.Caption = "Yolo" Labell 5.Caption = "Yolo" BaseControler.RecordSource = "yol" Img7.Picture = KentrikhPics(Index) Case 15 EparxiaName.Caption = "Tuolumne" Label 15.Caption = "Tuolumne" BaseControler.RecordSource = "tuo" Img7.Picture = KentrikhPics(Index) Case 16 EparxiaName.Caption = "Tulare" Labell 5.Caption = "Tulare" BaseControler.RecordSource = "tul" Img7. Picture = KentrikhPics(Index) Case 17 EparxiaName.Caption = "Sutter" Labell 5.Caption = "Sutter" BaseControler.RecordSource = "sut" Img7.Picture = KentrikhPics(Index) Case 18
34 EparxiaName.Caption = "Stanislaus" Labell 5.Caption = "Stanislaus" BaseControler.RecordSource = "sta" Img7.Picture = KentrikhPics(Index) Case 19 EparxiaName.Caption = "Solano" Labell 5.Caption = "Solano" BaseControler.RecordSource = "sol" Img7.Picture = KentrikhPics(Index) Case 20 EparxiaName.Caption = "San Joaquin" Labell 5.Caption = "San Joaquin" BaseControler.RecordSource = "sjq" Img7.Picture = KentrikhPics(Index) End Select Img7.Visible = True 'MAP OBJ CODE 'Map 1. Visible = False If Mapl.Layers.Count = 2 Then Mapl.Layers.Remove 0 Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer. Symbol. Size = 0 Mapl.Layers.Add QueryLayer Else Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers.Add QueryLayer End If Private Sub EparxiaN_Click(Index As Integer)
35 ι**************ίχος*:μ**************************** ******************** MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" If Not DbfFolder = Chr(z) + "Acalifornia" Then MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Exit Sub End If ********** gfg **************** Set objname = img4 efel.enabled = True Do Until efel.enabled = False DoEvents Loop Call ResetEfe(objname, 1530, 4095) I****************************** ViewStatus = 2 Call VisibleFalseFrames Geo 1(6). Visible = True BaseControler.DatabaseName = DbfFolderQ
36 Img7.Visible = False Select Case Index Case 0 EparxiaName.Caption = "Kern" Labell 5.Caption = "Kern" BaseControler.RecordSource = "km" Img7.Picture = NotiaPics(Index) Case 1 EparxiaName.Caption = "Imperial" Labell 5.Caption = "Imperial" BaseControler.RecordSource = "imp" Img7.Picture = NotiaPics(Index) Case 2 EparxiaName.Caption = "Orange" Labell 5.Caption = "Orange" BaseControler.RecordSource = "ora" Img7.Picture = NotiaPics(Index) Case 3 EparxiaName.Caption = "Los Angeles" Label 15.Caption = "Los Angeles" BaseControler.RecordSource = "lax" Img7.Picture = NotiaPics(Index) Case 4 EparxiaName.Caption = "San Diego" Label 15.Caption = "San Diego" BaseControler.RecordSource = "sdg" Img7.Picture = NotiaPics(Index) Case 5 EparxiaName.Caption = "Santa Barbara" Labell 5.Caption = "Santa Barbara" BaseControler.RecordSource = "sba" Img7.Picture = NotiaPics(Index) Case 6
37 EparxiaName. Caption = "San Bernardino" Label 15.Caption = "San Bernardino" BaseControler.RecordSource = "sbd" Img7.Picture = NotiaPics(Index) Case 7 EparxiaName.Caption = "Riverside" Label 15.Caption = "Riverside" BaseControler.RecordSource = "riv" Img7.Picture = NotiaPics(Index) Case 8 EparxiaName.Caption = "Ventura" Label 15.Caption = "Ventura" BaseControler.RecordSource = "ven" Img7. Picture = NotiaPics(Index) Case 9 EparxiaName.Caption = "San Luis Obispo" Label 15.Caption = "San Luis Obispo" BaseControler.RecordSource = "slo" Img7.Picture = NotiaPics(Index) End Select Img7. Visible = True MAP OBJ CODE 'Mapl.Visible = False If Map 1.Layers.Count = 2 Then Mapl.Layers.Remove 0 Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers.Add QueryLayer Else Set QueryLayer.GeoDataset = dc.findgeodataset(basecontroler.recordsource) QueryLayer.Symbol.Size = 0 Mapl.Layers.Add QueryLayer End If
38 **************** Ι'*********=Ι=**** + + + ****************** Ι **************** Private Sub Form_Load() dc.database = DbfFolder() συνδέει τη βάση δεδομένων με το map object ActiveMoviel.FileName = DbfFolder & "Wideo\lake.avi" Active Movie 1.^Visible = False Dim lyrcountry As New MapLayer δηλώνουμε ένα επίπεδο του map Set lyrcountry.geodataset = dc.findgeodataset("cntymrg") lyrcountry.symbol.color = modarkgreen Mapl.Layers. Add lyrcountry και το εμφανίζω Mapl.ScrollBars = False For h = 0 To 6 Image5(h).Left = -105 Image5(h).Top = 15 Next h img4.top = 1530 img4.lefl = 6825 img3.top = 1530 img3.left = 6825 img2.top - 1530 img2.left = 6825 img6.top = 1530
39 img6.left = 6825 img.top = 1530 img.left = 6825 img5.top - 1530 img5.left = 6825 Framel.BackColor = RGB(0, 0, 128) Form2.BackColor = RGB(0, 0, 128) 'loading pics once in memory img.picture = LoadResPicture(159, 0) Image2.Picture = LoadPicture(App.Path + 'Vcompass4.gif') img6.picture = LoadResPicture(160, 0) img5.picture = LoadResPicture(161, 0) img4.picture = LoadResPicture(162, 0) img3.picture = LoadResPicture(163, 0) img2.picture = LoadResPicture(164, 0) For u = 0 To 6 Image5(u).Left = Image5(6).Lefl Image5(u).Top = Image5(6).Top Image5(u).Height = Image5(6). Height Image5(u).Width = Image5(6).Width Next u For i = 0 To 7 Geol(i).Left = Geo 1(6).Left Geol(i).Top = Geol(6).Top Geol(i).Height = Geo 1(6). Height Geo l(i). Width = Geo 1(6). Width
40 Geo 1 (i).backcolor = RGB(0, 0, 128) Next i For b = 0 To 8 EparxiaB(b).Picture = LoadPicture(App.Path + "/koumpil.gif') Next b For k = 0 To 20 EparxiaK(k).Picture = LoadPicture(App.Path + "/koumpil.gif') Next k For d = 0 To 10 EparxiaD(d).Picture = LoadPicture(App.Path + "/koumpil.gif') Next d For n = 0 To 9 EparxiaN(n).Picture = LoadPicture(App.Path + "/koumpil.gif') Next n For c = 0 To 6 Category(c).Picture = LoadPicture(App.Path + "/koumpil.gif') Next c For a = 0 To 6 EparxiaA(a).Picture = LoadPicture(App.Path + "/koumpil.gif') Next a For p = 0 To 6 Image5(p).Picture = LoadPicture(App.Path + "\bg.gif) Next p MSFlexGrid2.ColWidth(0) = 2000 MSFlexGrid2.ColWidth( 1) = 2000
41 Imagel.Left = Framel.Width / 3-2 * Imagel.Width Image3.Left = 2 * Framel.Width 13-4* Image3.Width Image4.Left = 3 * Framel. Width 13-6* Image4. Width Status = 0 Call VisibleFalseFrames Geo 1(0). Visible = True Private Sub imagel_click() MMControll.Notify = False MMControll.Wait = True MMControll.Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" Call VisibleFalseFrames Select Case ViewStatus Case 0
42 Geo 1(0). Visible = True Case 1 Geo 1(0). Visible = True Case 2 Geol(Status).Visible = True ViewStatus = ViewStatus - 1 Case 3 Geo 1(6). Visible = True ViewStatus = ViewStatus - 1 Mapl. Visible = True ActiveMo vie 1. Visible = False End Select %3 ea ea ea ea e^e3 e3 e3 e4ea e^ea e^eafea ea e^eafea e3fea e4e4e9 ea ea e9 c4c9 ca e9 ea ea e3 e3 e4e4e4c4e4ea ea e4e4:3 c3 c3 e%j e4c4ea ea ea ca ca ca e4e4e4e4e^a e%%a e4e Private Sub Image3_Click() l************** jxqg***** ********************************************** MMControll.Notify = False MMControll. Wait = True MMControll.Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll. Command = "play" MMControll.Command = "prev" I******************************************************************** Call VisibleFalseFrames Καλεί την συνάρτηση που κάνει όλα τα frames Geo 1(0).Visible = True μη ορατά και επιστρέφει στην αρχική σελίδα. ViewStatus = 0
43 Mapl. Visible = True ActiveMo vie 1. Visible = False Private Sub Image4_Click() $$ *****$*$*****$*****$$* *******$******$*********** MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" I******************************************************************** Unload Me Τερματίζει το πρόγραμμα. Private Sub Label 16_Click(Index As Integer) 'ft*** * * * ** ***** g *** **** ** * * * * * * * **** * * * * * *** * *** ***** ********* * * * * * MMControll.Notify = False MMControll.Wait = True MMControll.Shareable = False MMControll.DeviceType = "Waveaudio"
44 MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" Select Case Index Case 0 To 20 Call EparxiaKClick(Index) Case 21 To 31 Call EparxiaD_Click(Index - 21) Case 32 To 40 Call EparxiaB_Click(Index - 32) Case 41 To 47 Call EparxiaA_Click(Index - 41) Case 48 To 57 Call EparxiaN_Click(Index - 48) Case 58 To 64 Call Category_Click(Index - 58) End Select
45 Private Sub Mapl_BeforeLayerDraw(ByVal Index As Integer, ByVal hdc As stdole.olehandle) If OnlyMe = False Then Select Case QueryString Case "airport" QueryF = "'airport'" Case "school" QueryF = " school" Case "park" QueryF = "park" Case "church" QueryF = '"church" Case "hospital" QueryF = "'hospital'" Case "harbor" QueryF = '"harbor" Case "lake" QueryF = '"lake"' End Select q = "feat_type=" + QueryF Εμφάνιση όλων των Set Sel = Form2.Mapl.Layers(0).SearchExpression(q) εγγραφών στο If Not Sel.EOF Then Dim sym As New MapObjects2.Symbol sym.symboltype = mofillsymbol επιλεγμένο layer του map object με χρώμα κίτρινο sym.style = mosolidfill sym.color = moyellow
46 sym.size = 10 Form2.Mapl.DrawShape Sel, sym End If Else Dim sym2 As New MapObjects2.Symbol sym2.symboltype = mofillsymbol Εμφάνιση μιας επιλεγμένης εγγραφής με χρώμα κόκκινο sym2.style = mosolidfill sym2.color = mored sym2.size = 10 Mapl.DrawShape Selfld, sym2 End If φφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφ# Private Sub Mapl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case Button Case 1 διαχείριση του ποντικιού για το zoom στο map object. ' Zoom in for the left button If Button = 1 And Shift = 0 Then Επιλογή τετραγώνου στο map object και Dim r As MapObjects2.Rectangle μεγέθυνση της επιλεγμένης περιοχής Set r = Mapl.TrackRectangle If Not r Is Nothing Then Mapl.Extent = r Else ' Otherwise, pan the map Mapl.Pan End If Case 2 Map 1.Extent = Map 1.FullExtent Δεξί κλικ στο ποντίκι επαναφορά του map στο αρχική προβολή. End Select
47 Private Sub MSFlexGrid2_Click() MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName = DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" On Error GoTo errorhandler Dim rec As Integer MSFlexGrid2.Col = 1 rec = MSFlexGrid2.Row Sel.MoveFirst If MSFlexGrid2.Row > 1 Then For i = 1 To rec - 1 Sel.MoveNext Next I astring = Sel.Fields("feat_name").ValueAsString Επιλογή συγκεκριμένης εγγραφής κάνοντας κλικ το MSFlexGrid2 Else astring = Sel.Fields("feat_name").ValueAsString End If t = "feat_name=" + "'" + astring +... Set Selfld = Mapl,Layers(0).SearchExpression(t) OnlyMe = True Mapl.Refresh MsgBox astring
48 'Epilogh photos Photo.Picture = LoadPicture(photoF(CategoryIndex)) Photo.Visible = True Mapl.Visible = True ActiveMo vie 1. Visible = False 'Video If EparxiaName.Caption = "Orange" And Categorylndex = 4 Then videobutton. Visible = True End If errorhandler: Err.Clear Select Case Err.Number Case 0 'nothing happens Case 5002 Case Else MsgBox 'Ένα απρόσμενο λάθος παρουσιάστηκε, παρακαλώ επικοινωνίστε με τον κατασκευαστή του προγράμματος", vbcritical End Select Private Sub videobutton_click()
49 **************^χοδ** ************************************************* MMControll.Notify = False MMControll.Wait = True MMControll. Shareable = False MMControll.DeviceType = "Waveaudio" MMControll.FileName - DbfFolder & "\ixos\utopia.wav" MMControll.Command = "open" MMControll.Command = "play" MMControll.Command = "prev" Map 1. Visible = False ActiveMoviel. Visible = True ActiveMovie 1.Run Ο κώδικας του Module είναι: Global Categorylndex As Integer Global Status As Integer Global ViewStatus As Integer Global QueryString As String Global Counter As Double Global WaitTime As Integer Δήλωση των global μεταβλητών Global w As Double Global AnatolikhPics(0 To 6) As Picture Global BoreiaPicsfO To 8) As Picture Global DytikhPics(0 To 10) As Picture Global KentrikhPics(0 To 20) As Picture
50 Global NotiaPics(0 To 9) As Picture Global objname As Object Global QueryLayer As New MapLayer Global dc As New DataConnection Global Sel As MapObjects2.Recordset Global Selfld As MapObjects2.Recordset Global OnlyMe As Boolean Global z As Integer Public Function VisibleFalseFrames() Συνάρτηση που κάνει όλα τα frames μη For i = 0 To 7 ορατά. Form2.Geo l(i). Visible = False Next i End Function Public Function FindData(QueryString) Counter = 0 Form2.MSFlexGrid2.Row = 0 Form2.MSFlexGrid2.Col = 0 Form2.MSFlexGrid2.Text = " Περιοχή " Form2.MSFlexGrid2.Col = 1 Form2.MSFlexGrid2.Text = " Ονομα " L.ProgressBarl.Max = Form2.MSFlexGridl.Rows θέτω τη μεγίστη τιμή του ProgressBarl τις γραμμές For w = 1 To Form2.MSFlexGridl.Rows - 1 του MSFlexGridl. If InStr(Form2.MSFlexGridl.TextMatrix(w, 8), (QueryString)) Then Counter = Counter + 1
51 Form2.MSFlexGrid2.RowHeight(Counter) = 500 Στο for...next ψάχνει Form2.MSFlexGrid2.Col = 0 Form2.MSFlexGrid2.Row = Counter κάθε γραμμή της 8ης στήλης την τιμή του QueryString.To Form2.MSFlexGridl.Col = 4 Form2.MSFlexGridl.Row = w MSFIexGridl αντιγράφει όλες τις τιμές του πίνακα ενώ το MSFlexGrid2 Form2.MSFlexGrid2.Text = Form2.MSFIexGridl.Text αντιγράφει τις τιμές που μας ενδιαφέρουν από το MSFIexGridl Form2.MSFlexGrid2.Col = 1 Form2.MSFlexGrid2.Row = Counter Form2.MSFlexGridl.Col = 5 Form2.MSFlexGridl.Row = w Form2.MSFlexGrid2.Text = Form2.MSFIexGridl.Text Form2.MSFlexGrid2.Rows = Form2.MSFlexGrid2.Rows + 1 End If L.LoadingData (w) Next w Form2.MSFlexGrid2.Rows = Form2.MSFlexGrid2.Rows - 1 Unload L End Function Public Function efe_l(objectname As Object, Speed As Integer) If ObjectName.Height < 96 Then Η συνάρτηση αυτή μεταβάλλει το top και το Form2.efel.Enabled = False height του image συμμετρικά ως προς τον άξονα Exit Function που περνάει από το κέντρο της εικόνας.
52 End If ObjectName.Top = ObjectName.Top + Speed \ 2 ObjectName.Height = ObjectName.Height - Speed End Function ****************************************************** Public Function ResetEfe(ObjectName As Object, t_op, height) ObjectName.Top = t_op Η συνάρτηση αυτή δίνει τις αρχικές ObjectName.Height = h EIGHT τιμές του image. End Function Public Function DbfFolder() On Error GoTo errorhandler Αναζήτηση του γράμματος του CD-ROM που περιέχει τον κατάλογο California For z = 68 To 90 DbfFolder = Chr(z) + ":\" + Dir(Chr(z) + "^California", vbdirectory) If DbfFolder = Chr(z) + "^California" Then Exit Function Next z errorhandler: Select Case Err.Number Case 0 'nothing happpens Err.Clear Case 52 'MsgBox "Παρακαλώ τοποθετήστε το CD-ROM MMGis στο CD-Drive", vbcritical Err.Clear If z > 90 Then Exit Function z = z + 1
53 Resume Case Else MsgBox Err.Description & " " & Err.Number, vbcritical Err. Clear End Select End Function Public Function photof(categorylndex) Randomize Σύναρτηση που επιλέγει τυχαία τις φωτογραφίες. Select Case Categorylndex Case 0 'sxolia Number = Int(( 5* Rnd) +1) photof = DbfFolder & "\photos\schools\" & Number & ".jpg" Case 1 'aerodromia Number = Int((l 1-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\airports\" & Number & ".jpg" Case 2 'nosokomia Number = Int((14-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\hospitals\" & Number & ".jpg" Case 3 'eklisies Number = Int((25-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\churches\" & Number & ".jpg" Case 4 'limnes Number = Int((8-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\lakes\" & Number & ".jpg" Case 5 'limania
54 Number = Int((7-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\harbors\" & Number & ".jpg" Case 6 'parka Number = Int((10-1 + 1) * Rnd + 1) photof = DbfFolder & "\photos\parks\" & Number & ".jpg" End Select End Function Private Sub videobutton_click() Mapl.Visible = False ActiveMo vie 1. Visible = True ActiveMoviel.Run Ο κώδικας της φόρμας τρία πατατίθεται παρακάτω : Public Sub LoadingData(w) Δήλωνα» τιμή στην ProgressBarl L.ProgressBarl.Value = w + 1 Private Sub Form_Load() Απενεργοποιώ τα navigation buttons Form2. Frame 1.Enabled = False
55 φφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφφ Private Sub Form_Unload(Cancel As Integer) Form2.BaseControler.Refresh Call FindData(QueryString) Form2.Geo 1(7). Visible = True Form2.Framel.Enabled = True OnlyMe = False Form2.Mapl. Extent = Form2.Mapl.FullExtent Form2.Mapl.Refresh Private Sub Timer l_timer() Do Until WaitTime > 2 WaitTime = WaitTime + 1 Loop Timerl.Enabled = False Unload Me