Τρίτη, 18 Απριλίου 2017

Εγχειρίδιο της Μ2000 - Τεύχος 30ο

17.2 Πλήκτρο (Button)

Στις φόρμες μπορούμε να βάζουμε πλήκτρα (buttons). Οι ιδιότητες και οι μέθοδές του δύνονται με αλφαριθμητικά και στα αγγλικά (το αντικείμενο τα έχει μια φορά σε Αγγλικά).

Η γραμματοσειρά, το μέγεθος των γραμμάτων,  και αν θα είναι φαρδιά ή όχι (bold) προγραμματίζονται με την μέθοδο "FontAttr"

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

Κάθε φορά που επιλέγουμε το button παίρνει την εστίαση εκτός και αν το έχουμε ανενεργό (Ιδιότητα "enabled") ή το έχουμε κλειδωμένο (Ιδιότητα "locked").

Κάθε πλήκτρο είναι μια παραλληλόγραμμη επιφάνεια, που σχεδιάζεται με παραλληλόγραμμο με γωνίες κανονικές ή στρογγυλεμένες (μέθοδος "curve" με τιμή αναλογία  διαστάσεων και καμπύλης), αλλά μπορεί να είναι και διάφανο (μέθοδος "transparent"). Η διαφάνεια δουλεύει με αντιγραφή του φόντου, άρα αν έχουμε πλήκτρο πάνω σε πλήκτρο δεν θα βλέπουμε το σκεπασμένο πλήκτρο αλλά το επίπεδο της φόρμας κάτω από τα πλήκτρα. Αφαιρούμε την διαφάνεια με το "transparentoff"

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

Μπορούμε να ορίσουμε αναδίπλωση λέξεων "WrapText" στο κείμενο που γράφουμε για Caption, αλλά το αναδιπλωμένο κείμενο ακουμπάει στην άνω πλευρά, και όχι το κέντρο, οπότε φέρνουμε τον πλαίσιο του στοιχείου στο μέγεθος που θέλουμε.

Με χρήση του "transparent" και χωρίς να χρησιμοποιούμε τo γεγονός Click() μπορούμε να χρησιμοποιήσουμε το στοιχείο ως ετικέτα (label). Το ίδιο μπορούμε να κάνουμε αν χρησιμοποιήσουμε το "Locked" με τιμή 1 (μη μηδενική), θα μπορεί να αλλάζει "Caption" αλλά δεν θα δέχεται γεγονότα (κλικ).

Κάποια φορά θέλουμε το πλήκτρο να είναι σκιασμένο, και αυτό γίνεται με την "Shadow" και ένα χρώμα για τα γράμματα (για να φαίνεται μη ενεργό). Επαναφέρουμε το στοιχείο με τη "ShadowOff"

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

Ένα πλήκτρο συνδέεται με τα άλλα στοιχεία με το tab (shift-tab), και δέχεται με τρεις τρόπους το "πάτημα" ή κλικ: Με το Enter όταν έχει την εστίαση, με αριστερό κλίκ εφόσον έχει την εστίαση, και με σύρσιμο της ετικέτας του δεξιά.

στο παράδειγμα που ακολουθεί, έχουμε τέσσερα πλήκτρα, το Ένα, Δϋο, Τρία και Τέσσερα. Όταν κάνουμε κλικ στο Ένα ή το σύρουμε δεξιά τότε σκιάζεται το Δύο και κλειδώνει, το Τρία έχει διάφανο φόντο και  ξεκλειδώνει το Δύο. Το Τέσσερα έχει αναδίπλωση κειμένου, και παράλληλα έχει το χρονιστή ενεργό και αλλάζει το χρώμα του Ένα και επιπλέον βάζει στο τίτλο της φόρμας την ώρα.
Όταν το Δύο κλειδώνει τότε το Tab το αφήνει για το επόμενο, όταν το ξεκλειδώνουμε το βάζει πάλι στη σειρά του. Το τρία έχει διάφανο φόντο και γίνεται χρήση των GotFocus/LostFocus.

Η επιλογή του Πλήκτρου γίνεται αφού είναι εστιασμένο. Έτσι με το ποντίκι σε ανεστίαστο πλήκτρο, πρώτα το επιλέγουμε και μετά το ενεργοποιούμε. Η ενεργοποίηση μπορεί να γίνει με το Enter, και επίσης με ολίσθηση  δεξιά (εφόσον αφήουμε το πλήκτρο του ποντικιού όταν το Caption σχεδόν χαθεί).


Όρισε Άλφα Φόρμα
\\ η φόρμα θα είναι σταθερή, δηλαδή χωρίς γεγονός resize

Σημ 1 : Με Άλφα, "Title", "Φόρμα Άλφα"
\\ Το τ$ αν και φαίνεται σαν μεταβλητή αλφαριθμητική
\\ είναι αντικείμενο που συνδέεται με την ιδιότητα Title
\\ το συγκεκριμένο και διαβάζεται για γράφεται.
Με Άλφα, "Title" ως τ$
τ$="Φόρμα Άλφα"
Επίπεδο Άλφα {
      \\ αντί να χρησιμοποιήσουμε την Μέθοδο Άλφα, "move"....
      \\ χρησιμοποιούμε την Παράθυρο.
      \\ ο αριθμός 12 είναι το μέγεθος χαρακτήρων πάνω στο επίπεδο
      Παράθυρο 12,8000,8000
      Φόντο 1,5
      θέση 4000,4000
      Κύκλος Γέμισμα 7, 3000,1.5,7
}
Όρισε Ένα Πλήκτρο Φόρμα Άλφα
Όρισε Δύο Πλήκτρο Φόρμα Άλφα
Όρισε Τρία Πλήκτρο Φόρμα Άλφα
Όρισε Τέσσερα Πλήκτρο Φόρμα Άλφα
Μέθοδος Ένα,"move", 300, 1000, 3000, 600
Μέθοδος Δύο,"move", 300, 2000, 3000, 600
Μέθοδος Τρία,"move", 300, 3000, 3000, 600
Μέθοδος Τέσσερα,"move", 300, 4000, 3000, 700
Με Τέσσερα,"Caption",{Είμαι το Τέσσερα
---------------}
Με Τέσσερα,"WrapText", 1
\\ Με Τέσσερα, "Blink", 500
\\ και εδώ συνδέουμε μια μεταβλητή με την ιδιότητα
Με Τέσσερα, "Blink" ως Ρυθμός
Ρυθμός=500
Μέθοδος Δύο, "curve", 2.5
Μέθοδος Τρία,"transparent"
Μέθοδος Τρία,"Colors", 7
Στοπ_Blink=Ψευδες
Συνάρτηση Ένα.Click {
      τ$="Φόρμα Άλφα: Ένα"
            Μέθοδος Δύο,"Shadow", 7
}
Συνάρτηση Δύο.Click {
      τ$="Φόρμα Άλφα: Δύο"
}
Συνάρτηση Τρία.GotFocus {
      Μέθοδος Τρία, "Colors", 15
}
Συνάρτηση Τρία.LostFocus {
      Μέθοδος Τρία, "Colors", 7
}
Συνάρτηση Τρία.Click {
      τ$="Φόρμα Άλφα: Τρία"
      Μέθοδος Δύο,"ShadowOff"
}
Συνάρτηση Τέσσερα.Click {
      τ$="Φόρμα Άλφα: Τέσσερα"
      Στοπ_Blink~
      Ρυθμός=-500*Στοπ_Blink \\ 0 ή -1
}
\\ Μπορούμε με το γεγονός Blink να ελέγχουμε άλλα στοιχεία
\\ λειτουργεί σαν Timer σε φόρμα, και δεν έχει να κάνει με νήματα
\\ κάθε φορά που το Timer ολοκληρώνει το μέτρημα δίνει το γεγονός
\\ Αν μηδενίσουμε το Timer τότε δεν στέλνει γεγονός Blink
Συνάρτηση Τέσσερα.Blink {
      Διάβασε ΆλλαγηΧρ
      τ$="Φόρμα Άλφα: Τέσσερα "+Γραφή$(Τώρα,"hh:mm:ss")
      Αν ΆλλαγηΧρ Τότε {
            Μέθοδος Ένα,"Colors", #ff7700
      } Αλλιώς Μέθοδος Ένα,"Colors", #0077ff
      Μέθοδος Ένα,"Show"
}
\\ Ανοίγουμε τη φόρμα ως Modal, και θα κλείσει από το πάνω αριστερό τετραγωνάκι
Μετα 2000 {
      Μέθοδος Τρία,"ColorsReset"
      Μέθοδος Τρία,"transparentOff"
}
Μετα 4000 {
      Μέθοδος Τρία,"transparent"
}
Μέθοδος Άλφα, "Show",1
Όρισε Άλφα Τίποτα




Γεγονότα του Πλήκτρου
  • About  Όταν πατάμε το Ctrl+F1 ενώ έχουμε την εστίαση στο πλήκτρο (αυτό μπορεί να γίνει με Tab ή Shift Tab, ή με απλό κλικ στο πλήκτρο, το οποίο σε κάθε περίπτωση "χρωματίζεται" ως εστιασμένο.(Νέο Γεγονός από αναθεώρηση 18 έκδοση 8.9, έχει προστεθεί σε όλα τα στοιχεία ελέγχου και στη φόρμα)
  • Blink(κ) όπου κ μια φορά 0 και μια φορά -1 (εναλλαγή αληθές-ψευδές)
  • Click
  • GotFocus και LostFocus (όταν έχει φόντο διάφανο, νέο στο 8.7 αναθ. 8)

Ιδιότητες
  • Caption  κείμενο (διαβάζεται και αλλάζει)
  • WrapText  τιμή 0 (Ψευδής) ή μη μηδενική (Αληθής) για αναδίπλωση λέξης (διαβάζεται και αλλάζει)
  • Blink παίρνει τιμή το χρονικό διάστημα ανά χιλιοστά δευτερολέπτου (μόνο αλλάζει)
  • Top θέση άνω (διαβάζεται και αλλάζει)
  • Left θέση αριστερά (διαβάζεται και αλλάζει)
  • Locked με Αληθές κλειδώνει το πλήκτρο (το κάνει και η μέθοδος "Shadow") (διαβάζεται και αλλάζει)
  • Enabled με Ψευδές πριν ανοίξει η φόρμα δεν εμφανίζεται το πλήκτρο (διαβάζεται και αλλάζει)
  • Index ο αριθμός του πλήκτρου αν ανήκει σε πίνακα πλήκτρων.

Μέθοδοι
  • Move παίρνει δυο θέση Άριστερά, θέση Άνω και προαιρετικά Πλάτος και Ύψος (σε twips)
  • Curve παίρνει μια παράμετρο έναν αριθμό κινητής υποδιαστολής μεγαλύτερο από 0,08
  • Colors  παίρνει χρώμα γραμμάτων και προαιρετικά χρώμα φόντου και χρώμα φόντου για την επιλογή.
  • ColorsReset φαίρνει τα χρώματα στα εξ ορισμού.
  • FontAttr γραμμαοσειρά και προαιρετικά μέγεθος, και τιμή 0 ή 1 για φαρδιά (bold)
  • Show ανανεώνει το πλήκτρο
  • Transparent προσθέτει την διαφάνεια φόντου
  • TransparentOff αφαιρεί την διαφάνεια φόντου
  • Shadow Χρώμα_Γραμμάτων βάζει και το Locked=Αληθές
  • ShadowOff βγάζει το Locked και βάζει το επιλεγμένο χρώμα κειμένου.

Στις παρακάτω εικόνες έχει μπει η Επιφάνεια 200 (διάφανη η κονσόλα στο 200/255*100%)
Και στα τρία λειτουργικά έχουμε την ίδια μορφή παραθύρου! Οι κονσόλες έχουν διαφορετικές γραμματοσειρές από επιλογή. Τα Windows και στις δυο περιπτώσεις δεν έχουν υποστήριξη ελληνικών για μη Unicode προγράμματα. Τα αρχεία προγραμμάτων της M2000 είναι σε UTF-8, και διορθώνονται και από το WordPad, επειδή αναγνωρίζει αυτόματα τη κωδικοποίηση.
Και τα τρία λειτουργικά έτρεξαν μαζί, σε έναν υπολογιστή (με βάση το Ubuntu Studio 16.04).

Εικόνα από Windows 8, 64 Bit (σε Virtual Box)

Εικόνα από Windows 7, 32 Bit (Virtual Box)
Εκτέλεση με Wine,  σε Ubuntu Studio 16.04 64 bit.
Εκτέλεση σε XP