Τετάρτη 24 Σεπτεμβρίου 2014

Νέα στοιχεία ελέγχου - για φόρμες της VB6



Μετά από αρκετή προσπάθεια κατάφερα να φτιάξω ένα στοιχείο ελέγχου που μπορεί να παίρνει διάφορες μορφές σε μια φόρμα.

Στην εικόνα παραπάνω είναι ένα στοιχείο ελέγχου σε διάφορες μορφές. Η πιο κοπιαστική μορφή είναι αυτή του επεξεργαστή κειμένου. Εδώ έχουμε έναν επεξεργαστή κειμένου χωρίς μίξη γραμματοσειρών και μεγεθών/τύπου χαρακτήρων, αν και μπορούμε να αλλάξουμε οποτεδήποτε αυτά για όλα μαζί. Αυτό που προσφέρει είναι ότι χρησιμοποιεί εμφάνιση UNICODE χαρακτήρων, αλλάζει την απόσταση γραμμών, αλλάζει όποτε θέλουμε την αναδίπλωση λέξεων, μπορούμε να αποκόψουμε ή αντιγράψουμε προς το πρόχειρο ή να επικολλήσουμε από το πρόχειρο, μπορούμε να μεταφέρουμε σε άλλο ίδιο ή ακόμα και στο Word το κείμενο με "σύρε και απέθεσε" ενέργεια (Drag & Drop). Υπάρχει μπάρα οριζόντιας ολίσθησης που εμφανίζεται όταν πάμε στην δεξιά πλευρά και όταν μετακινήσουμε τις γραμμές πάνω ή κάτω με ώθηση κρατώντας πατημένο το αριστερό πλήκτρο του ποντικού. Μπορεί να χειριστεί τεράστιο κείμενο και σε μια φόρμα που αλλάζει μέγεθος μπορεί να αλλάξει την αναδίπλωση λέξεων άμεσα χωρίς καθυστέρηση. Υποστηρίζει απλή αναίρεση (αν μεταφέρουμε τον κέρσορα και δεν έχουμε πατήσει κάποιο πλήκτρο τότε ισχύει η αναίρεση της προηγούμενης ενέργειας με ctrl z). Δεν μπορούμε να αναιρέσουμε την προσθήκη πάνω από μια παράγραφο (αυτό θέλει περισσότερο προγραμματισμό). Αντί αυτού μπορούμε να μαρκάρουμε το κείμενο που θέλουμε να αφαιρέσουμε και να το κάνουμε και άμεσα μπορούμε να το επαναφέρουμε...

Επιπλέον υπάρχουν στοιχεία ελέγχου όπως, το Check Me, ή ελληνικά το Επίλεξέ Με όπου η επιλογή ή η μη επιλογή εμφανίζεται ως κουκκίδα τετράγωνη. Στην επιλογή του στοιχείου έχουμε αλλαγή χρωματισμού, στην εικόνα φαίνεται πράσινο. Με το πλήκτρο "διάστημα" μπορούμε να εναλλάσσουμε την τιμή του (την εμφάνιση ή απόκρυψη της κουκκίδας), και κάθε αλλαγή δίνει ένα "γεγονός" στο πρόγραμμα για να "εξυπηρετηθεί". (event service routine, event programming). 

Υπάρχει επίσης το απλό μπουτόν επιλογής το οποίο όμως διαφέρει από τα συνηθισμένα στο ότι εκτός από διπλό κλικ για να ενεργοποιηθεί (και όχι ένα), μπορεί να ενεργοποιηθεί με ολίσθηση της λεζάντας δεξιά. Δηλαδή με το ποντίκι πετάμε τη λεζάντα δεξιά και αυτό σημαίνει "γεγονός επιλογής".

Επιπλέον υπάρχει ένα ειδικό στοιχείο για εμφάνιση αριθμητικής τιμής με εμφάνιση κειμένου αριστερά και δεξιά που δεν αλλάζουν και αλλαγή της τιμής πληκτρολογώντας ή με τα βελάκια άνω και κάτω ή με την μπάρα ολίσθησης. Ενώ στην απλή λίστα η μπάρα ολίσθησης ξεκινάει πάντα από το ένα πάνω...και καταλήγει στο πλήθος γραμμών στο κάτω σημείο, εδώ έχουμε μια τιμή ως άνω τιμή και μια μικρότερη τιμή ως κάτω τιμή, ώστε η αύξηση τιμής να γίνεται προς τα πάνω.

Επιπλέον στο παράδειγμα εδώ εμφανίζεται ένα στοιχείο αναφοράς (το οποίο κρύβει και μια διαμόρφωση εισαγωγής στοιχείων), και βρίσκεται πάνω αριστερά, καθώς και μια λίστα με τιμές που έχουν επίσης την ιδιότητα να επιλέγεται η δράση τους (εδώ να γραφτεί ο αριθμός στο στοιχείο εμφάνισης αριθμού) με ολίσθηση δεξιά (pan right)

Τέλος υπάρχει ένας συνδυασμός δυο στοιχείων ελέγχου που δίνει το Combobox, όπου μπορούμε να γράψουμε με αυτόματη συμπλήρωση από μια λίστα τιμών (εδώ  λέξεων πόλεων/μερών). Με τα άνω και κάτω βελάκια ανοίγουμε την λίστα, όπως και με πάτημα και τράβηγμα του πρώτου στοιχείου ελέγχου. Μπορούμε να επιλέξουμε από τη λίστα με Enter ή αν θέλουμε να τροποποιήσουμε την επιλογή στο κύριο στοιχείο χωρίς να κλείσουμε την λίστα. Η λίστα φεύγει αν πατήσουμε TAB για να κινηθούμε στο επόμενο στοιχείο ή SHIFT TAB στο προηγούμενο, ή απλά αν επιλέξουμε άλλο στοιχείο (ακόμα και με επιλογή από το ποντίκι του πρώτου στοιχείου πάλι κλείνει η λίστα, ουσιαστικά δεν κλείνει αν πληκτρολογούμε κάτι στο πρώτο στοιχείο ενώ είναι ανοικτή, με τα βελάκια άνω και κάτω πάμε στη λίστα και με τα δεξιά και αριστερά στην διόρθωση της επιλογής)

Η βάση όλων αυτών των μορφών είναι ένα και μόνο στοιχείο ελέγχου το glist4 το οποίο έχει χρησιμοποιηθεί (σε πιο απλή μορφή) στον Επιλογέα Αρχείων. Με απλά λόγια το glist4 έχει μια επιφάνεια όπου ζωγραφίζει..και τρία τετράπλευρα (shapes) που χρησιμοποιεί για μπάρα ολίσθησης. Μάλιστα στην περίπτωση της μορφής του επεξεργαστή κειμένου, παρέχει σε ανώτερο επίπεδο το τετράπλευρο όπου θα εμφανιστεί μια γραμμή κειμένου χωρίς να περιέχει ούτε ένα γράμμα...στην εσωτερική του λίστα. Το κείμενο παραμένει σε ένα αντικείμενο όπου "διαμένουν" οι παράγραφοι τεμαχισμένες σε γραμμές. 

Τα παραπάνω καλούδια είναι γραμμένα με VB6, και το πρόγραμμα επίδειξης τρέχει σε XP, 7, Linoux με WINE. Ο κώδικας είναι ανοικτός και βρίσκεται εδώ:
http://www.vbforums.com/showthread.php?776741-Nice-Textboxes-version2







Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.