Δευτέρα 10 Μαρτίου 2025

Αναθεώρηση 23 'Εκδοση 13

 Στην νέα αναθεώρηση μπορούμε να έχουμε Εικόνα σε Εικόνα σε φόρμα. Δηλαδή αυτό με τα φαρδιά γράμματα (Bold) δεν μπορούσαμε να το δώσουμε.

ΟΡΙΣΕ Πλαίσιο1_Στοιχεία ΕΙΚΟΝΑ ΦΟΡΜΑ Φόρμα1 ΕΙΚΟΝΑ Πλαίσιο1

Το Πλαίσιο1_Στοιχεία ανήκει στην φόρμα1 και βρίσκεται στο Πλαίσιο1. Ο διαχειριστής παραθύρων της Μ2000 καταγράφει τα στοχεία σε μια λίστα, εντός μιας φόρμας. Με την εντολή επιπλέον ΕΙΚΟΝΑ συσχετίζουμε το στοιχείο μας με την Εικόνα Πλαίσιο1.

Στο παράδειγμα παρακάτω (έχει μπει και στο σύντομο οδηγό που ετοιμάζω)  έχουμε  δυο καρτέλες που φτιάχνονται με Εικόνες, και έχουμε δώσει ένα σχέδιο με διαφάνεια και για το λόγο αυτό φαίνονται τα ονόματα το ένα δίπλα στο άλλο. Στο Πλαίσιο1 έχουμε ένα ακόμα πλαίσιο με τα στοιχεία ελέγχου για να μπορούμε να τα απενεργοποιούμε. Επειδή τα πλαίσια δεν τα απενεργοποιούμε αλλά τους αλλάζουμε το λεγόμενο zorder δηλαδή ποιο θα είναι πάνω από τα άλλα, αν είχαμε αφήσει τα πλήκτρα ως έχουν τότε το TAB θα τα έβρισκε ενεργά παρόλο που θα ήταν πίσω από το πλαίσιο2. Με το να τα βάλουμε σε ένα άλλο πλαίσιο/εικόνα μπορούμε να τα κάνουμε αθέατα και έτσι το TAB να μην τα βρίσκει!

Στο πρόγραμμα αν κάνουμε κλικ στη φόρμα, τότε πότε κρύβει το πλαίσιο1 και πότε το εμφανίζει! Παρατηρήστε ότι όλες οι εντολές και οι μεταβλητές μόνο για ανάγνωση της Μ2000 είναι με κεφαλαία (θα μπορούσε να ήταν και με μικρά και με τόνους) για να γίνει κατανοητό στον αναγνώστη ποιες είναι οι μεταβλητές που εμείς ορίζουμε.




ΣΤΑΘΕΡΗ ΟΔΗΓΙΕΣ$="Διπλό κλικ στο Πλήκτρο και μετά κλικ στο πλαίσιο μέχρι να φύγει"
ΟΡΙΣΕ Φόρμα1 ΦΟΡΜΑ
ΟΡΙΣΕ Πλαίσιο1 ΕΙΚΟΝΑ ΦΟΡΜΑ Φόρμα1
ΟΡΙΣΕ Πλαίσιο1_Στοιχεία ΕΙΚΟΝΑ ΦΟΡΜΑ Φόρμα1 ΕΙΚΟΝΑ Πλαίσιο1
ΟΡΙΣΕ Πλαίσιο2 ΕΙΚΟΝΑ ΦΟΡΜΑ Φόρμα1
ΟΡΙΣΕ Πλήκτρο1(3) Πλήκτρο ΦΟΡΜΑ Φόρμα1 ΕΙΚΟΝΑ Πλαίσιο1_Στοιχεία
ΜΕΘΟΔΟΣ Φόρμα1, "move",1000,1000,10000, 5600
ΜΕΘΟΔΟΣ Πλαίσιο1, "move", 600,600, 10000-2*600, 4000
ΜΕΘΟΔΟΣ Πλαίσιο2, "move", 600,600, 10000-2*600, 4000
ΜΕΘΟΔΟΣ Πλαίσιο1_Στοιχεία, "move",60, 600,10000-2*660, 3200
ΑΚΕΡΑΙΟΣ τελευταίος_δείκτης=-1
ΓΙΑ ι=0 ΕΩΣ 2
ΜΕΘΟΔΟΣ Πλήκτρο1(ι), "move", 1000, 200+1000*ι, 3000, 600
ΕΠΟΜΕΝΟ
ΓΙΑ ι=3 ΕΩΣ 5
ΟΡΙΣΕ Πλήκτρο1() Πάνω
ΜΕΘΟΔΟΣ Πλήκτρο1(ι), "move", 4600, 200+1000*(ι-3), 3000, 600
ΕΠΟΜΕΝΟ
ΕΠΙΠΕΔΟ Πλαίσιο1_Στοιχεία {
ΟΘΟΝΗ 1
}
ΜΕ Πλαίσιο1, "visible" ΩΣ θεατό, "tabstop", ΨΕΥΔΕΣ
ΜΕ Πλαίσιο2, "visible" ΩΣ θεατό2, "tabstop",ΨΕΥΔΕΣ
ΜΕ Πλαίσιο1_Στοιχεία, "visible" ΩΣ θεατό3, "tabstop",ΨΕΥΔΕΣ
ΜΕ Φόρμα1, "LastControl" ΩΣ ΤελευταίοΣτοιχείο$, "backcolor" ΩΣ χρώμα_φόντου ' μόνο ανάγνωση
ΣΥΝΑΡΤΗΣΗ Ετικέτα(Πού, Χ, κ$, Χρώμα_Πένας, ΧρώμαΕτικέτας, ΑυτόΤοΧρώμα){
ΟΘΟΝΗ ΑυτόΤοΧρώμα
ΠΕΝΑ Χρώμα_Πένας
ΔΙΠΛΑ
ΦΑΡΔΙΑ 1
Π=ΜΕΓΕΘΟΣ.Χ(κ$, ΓΡΑΜΜΑΤΟΣΕΙΡΑ$, ΤΥΠΟΣ)
Υ=ΜΕΓΕΘΟΣ.Υ("fj", ΓΡΑΜΜΑΤΟΣΕΙΡΑ$, ΤΥΠΟΣ)
Υ1=Υ+ΥΨΟΣ.ΣΗΜΕΙΟΥ*2
ΠΑΧΟΣ 4 {
ΘΕΣΗ ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*2, Υ1
ΧΑΡΑΞΕ Χ
ΧΑΡΑΞΕ ,-Υ
ΧΑΡΑΞΕ Π
ΧΑΡΑΞΕ Υ, Υ
ΧΑΡΑΞΕ ΕΩΣ Χ.ΣΗΜΕΙΑ-ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*2
ΧΑΡΑΞΕ ΕΩΣ ,Ψ.ΣΗΜΕΙΑ-ΥΨΟΣ.ΣΗΜΕΙΟΥ*2
ΧΑΡΑΞΕ ΕΩΣ ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*2
ΧΑΡΑΞΕ ΕΩΣ ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*2, Υ1
}
ΘΕΣΗ 100, 100
ΓΕΜΙΣΕ Χ+150, 150, ΧρώμαΕτικέτας
ΜΕΘΟΔΟΣ Πού, "MaskColor", ΑυτόΤοΧρώμα
ΘΕΣΗ Χ+ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*6, ΥΨΟΣ.ΣΗΜΕΙΟΥ*2
ΠΛΑΓΙΑ 1
ΕΠΙΓΡΑΦΗ κ$, ΓΡΑΜΜΑΤΟΣΕΙΡΑ$, ΤΥΠΟΣ, 0, 0, 1
=Π
}
ΤοΧρώμαΦόντουΜου=χρώμα_φόντου
ΕΠΙΠΕΔΟ Πλαίσιο1{
Π1=Ετικέτα(Πλαίσιο1, 0, " Πλαίσιο1 ", 11, 1, ΤοΧρώμαΦόντουΜου)
}
ΤΜΗΜΑ ΔείξεΑυτό (κ$) {
ΚΑΝΟΝΙΚΑ
ΠΛΑΓΙΑ 0
ΔΡΟΜΕΑΣ 0, ΥΨΟΣ/2
ΑΝΑΦΟΡΑ 2, κ$ ' 2 ΓΙΑ στοίχιση κέντρο
}
ΤΜΗΜΑ Πλαισιο2_εμφάνισε (ΝΕΟ εδώ) {
Π1 = Ετικέτα(Πλαίσιο2, εδώ, " Πλαίσιο2 ", 11, 2, ΤοΧρώμαΦόντουΜου)
ΔείξεΑυτό "Αυτό είναι το Πλαίσιο 2"
}
ΕΠΙΠΕΔΟ Πλαίσιο2{
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαισιο2_εμφάνισε, Π1+ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*10
}
ΕΠΙΠΕΔΟ Φόρμα1 {
ΟΘΟΝΗ ΤοΧρώμαΦόντουΜου
ΦΟΡΜΑ ΠΛΑΤΟΣ, ΥΨΟΣ
ΦΟΝΤΟ 5, 1
ΔΡΟΜΕΑΣ 0, ΥΨΟΣ-1
ΤΥΠΩΣΕ ΜΕΡΟΣ $(6, ΠΛΑΤΟΣ), ΟΔΗΓΙΕΣ$
ΚΡΑΤΗΣΕ
}
ΣΥΝΑΡΤΗΣΗ Επαναφορά_Εστίασης() {
ΤΟΠΙΚΗ κ$=ΤελευταίοΣτοιχείο$
ΑΝ κ$<>"" ΤΟΤΕ
ΜΕΘΟΔΟΣ Φόρμα1, "Control", κ$ ΩΣ ΝΕΟ ΣτοιχείοΧρήστη
ΔΕΣ {ΜΕΘΟΔΟΣ ΣτοιχείοΧρήστη, "SetFocus"}
ΤΕΛΟΣ ΑΝ
}
ΣΥΝΑΡΤΗΣΗ Πλαίσιο1_Στοιχεία.click {
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαίσιο1.click()
}
ΣΥΝΑΡΤΗΣΗ Πλαίσιο1.click {
ΤΥΠΩΣΕ "κλικ Πλαίσιο1"
ΑΝΑΝΕΩΣΗ
ΜΕΘΟΔΟΣ Πλαίσιο1,"Zorder"
θεατό3=ΑΛΗΘΕΣ
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Επαναφορά_Εστίασης()

ΑΝ τελευταίος_δείκτης<>-1 ΤΟΤΕ
ΟΡΙΣΕ Πλήκτρο1() ΔΙΑΓΡΑΦΗ τελευταίος_δείκτης
τελευταίος_δείκτης=-1
ΤΕΛΟΣ ΑΝ
ΑΝΑΝΕΩΣΗ
}
ΣΥΝΑΡΤΗΣΗ Πλαίσιο1.GotFocus {
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαίσιο1.click()
}
ΣΥΝΑΡΤΗΣΗ Πλαίσιο2.click {
ΤΥΠΩΣΕ "κλικ Πλαίσιο2"
ΜΕΘΟΔΟΣ Πλαίσιο2,"Zorder"
θεατό3=ΨΕΥΔΕΣ
ΕΠΙΠΕΔΟ Φόρμα1 {ΑΝΑΝΕΩΣΗ}
}
ΣΥΝΑΡΤΗΣΗ Πλαίσιο2.GotFocus {
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαίσιο2.click()
}
ΣΥΝΑΡΤΗΣΗ Φόρμα1.click {
ΤΥΠΩΣΕ "κλικ Φόρμα1"
ΑΝ θεατό ΤΟΤΕ
θεατό=ΨΕΥΔΕΣ
ΕΠΙΠΕΔΟ Πλαίσιο2 {
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαισιο2_εμφάνισε, 0
}
ΑΛΛΙΩΣ
ΑΝΑΝΕΩΣΗ 1000
ΕΠΙΠΕΔΟ Πλαίσιο1{
θεατό3=ΑΛΗΘΕΣ
Π1=Ετικέτα(Πλαίσιο1, 0, " Πλαίσιο1 ", 15, 1, ΤοΧρώμαΦόντουΜου)
}
ΕΠΙΠΕΔΟ Πλαίσιο2{
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Πλαισιο2_εμφάνισε, Π1+ΠΛΑΤΟΣ.ΣΗΜΕΙΟΥ*10
}
ΕΠΙΠΕΔΟ Φόρμα1 {
ΑΦΗΣΕ
}
θεατό=Αληθές
ΚΑΛΕΣΕ ΤΟΠΙΚΑ Επαναφορά_Εστίασης()
ΤΕΛΟΣ ΑΝ
ΑΝΑΝΕΩΣΗ 10
}
ΣΥΝΑΡΤΗΣΗ Πλήκτρο1.click(ΝΕΟ τωρινός_δείκτης) {
        ΜΕ Πλήκτρο1(τωρινός_δείκτης), "caption" ΩΣ ΝΕΟ πινακίδα$
        τελευταίος_δείκτης=τωρινός_δείκτης
        ΤΥΠΩΣΕ "("+τωρινός_δείκτης +") "+ πινακίδα$
        ΑΝΑΝΕΩΣΗ
}
ΜΕΘΟΔΟΣ Πλαίσιο1, "AccKey", "1", opcode:= 503
ΜΕΘΟΔΟΣ Πλαίσιο2, "AccKey", "2", opcode:= 503
ΜΕΘΟΔΟΣ Φόρμα1, "show", 1
ΟΡΙΣΕ Φόρμα1 Τίποτα