SortControl Ver 1.5

Ένα χρησιμότατο .ΝΕΤ control για την αυτόματη δημιουργία μίας φόρμας επιλογής πεδίων ταξινόμησης σε εφαρμογές διαχείρισης Βάσης Δεδομένων. Παρέχει πολλές ιδιότητες διαμόρφωσης των χαρακτηριστικών του. Στην παρακάτω εικόνα βλέπετε ένα παράδειγμα :

 

 

Τι νέο υπάρχει στην έκδοση 1.1

Διορθώσεις στην έκδοση 1.2

Τι νέο υπάρχει στην έκδοση 1.3

Τι νέο υπάρχει στην έκδοση 1.4

Τι νέο υπάρχει στην έκδοση 1.5

 

Χρήστος Μουρατίδης, Ιανουάριος  2006

 

Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου SortControl.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα  SortControl Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control 

καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του control.

 

Λίγα λόγια για το SortControl Control

Σε αρκετές εφαρμογές, ο προγραμματιστής επιθυμεί να δημιουργεί μία φόρμα όπου θα δίνει τη δυνατότητα στο χρήστη της εφαρμογής του να επιλέγει κάποια πεδία ταξινόμησης και το είδος αυτής (αύξουσα ή φθίνουσα). Στη συνέχεια, με βάση τις επιλογές του να ανοίγει  από κάποια Βάση Δεδομένων ένα set εγγραφών με την ταξινόμηση αυτή μέσω μίας εντολής SELECT της γλώσσας SQL. Ως γνωστόν, στο τμήμα ORDER BY της εντολής  καθορίζουμε την ταξινόμηση των εγγραφών. 

Το SortControl, λοιπόν, επιστρέφει ένα string που μπορεί να χρησιμοποιηθεί στο τμήμα ORDER BY  : 

 

Π.χ.   Select  *  From ΜΑΘΗΤΕΣ  Order by  “ & SortControl1.SortString

 

Όπου η  SortString  μπορεί να περιέχει το string “ΕΠΩΝΥΜΟ ASC, ΟΝΟΜΑ DESC

 

Επιπλέον, μπορεί να χρησιμοποιηθεί και στην ιδιότητα Sort του DataView :

 

Π.χ.   DataView1.Sort =  Sortcontrol1.SortString

 

Οπότε ταξινομεί τις τρέχουσες εγγραφές ενός DataView.

 

Από την έκδοση 1.5 υπάρχει η δυνατότητα να καθορίσουμε, μέσω κώδικα, αν θέλουμε να μην εμφανίζεται ένα πεδίο στα combos του SortControl. Αυτό γίνεται μέσω της μεθόδου SetFieldVisible ως εξής :

 

Πχ.   Sortcontrol1.SetFieldVisible(ID”,False)

 

Το πεδίο ID του DataTable που έχουμε δηλώσει, δεν θα εμφανίζεται στα combos. Εξ΄ ορισμού, όλα τα πεδία εμφανίζονται.

 

Επίσης, μέσω της  ιδιότητας  SortFieldsArrayList επιστρέφεται ένα ArrayList με αντικείμενα τύπου SortFieldsArrayListItem. Καθένα από αυτά περιέχει το όνομα του επιλεγμένου πεδίου και τον τύπο της ταξινόμησης (FieldName, OrderBy). Έτσι, μπορεί να χρησιμοποιηθεί και για άλλους σκοπούς. Να σημειωθεί ότι, η ιδιότητα  SortFieldsArrayList μπορεί να καθοριστεί από τον προγραμματιστή μέσω κώδικα, οπότε μόλις ανοίγει η φόρμα που περιέχει το control να γεμίζουν αυτόματα τα combos.

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

 

Παρακάτω παρουσιάζονται οι ιδιότητες, μέθοδοι και τα γεγονότα του control :

Ιδιότητες                                 

  

1)    DataTableSource     :ο πίνακας τροφοδότης των πεδίων, τύπου DataTable.

2)    SortString          :Το επιστρεφόμενο SortString που θα χρησιμoποιηθεί στο τμήμα ORDER BY μίας SQL πρότασης ή σε

   ένα DataView.

3)    SortFieldsArrayList :To ArrayList των Sort Fields με το order by μαζί, δηλαδή τα αντικείμενα τύπου

    SortFieldsArrayListItem

4)    ErrorMsg            :Το μήνυμα λάθους που επιστρέφει το γεγονός ErrorSorting

5)    SortedCombos        :Να είναι ταξινομημένα τα στοιχεία των combos;

6)    ForeColorLabels     :To ForeColor των ετικετών των combos.

7)    ForeColorCombos     :To ForeColor του κειμένου των combos.

8)    ForeColorAscDesc    :To ForeColor των γραμμάτων Αύξουσα / Φθίνουσα.

9)    ForeColorButtons    :To ForeColor των γραμμάτων των buttons.

10)BackColorLabels     :To BackColor των ετικετών των combos.

11)BackColorAscDesc    :To BackColor των γραμμάτων Αύξουσα / Φθίνουσα.

12)BackColorButtons    :To BackColor των buttons.

13)FontLabels          :To Font των ετικετών των combos.

14)FontCombos          :To Font του κειμένου των combos.

15)FontAscDesc         :To Font των γραμμάτων Αύξουσα / Φθίνουσα.

16)FontButtons         :To Font των γραμμάτων των buttons.

17)  VisibleBtnCancel    :Θα είναι ορατό το button Cancel;

18)  VisibleBtnΟΚ        :Θα είναι ορατό το button ΟΚ; (νέο στην έκδοση 1.3)

 

Γεγονότα

 

1)    ΟnOKPressed()     : Ενεργοποιείται όταν πατηθεί το OK.

2)    OnCancelPressed() : Ενεργοποιείται όταν πατηθεί το Ακύρωση.

3)    OnClearPressed()  : Ενεργοποιείται όταν πατηθεί το Απαλειφή.

4)    OnErrorSorting()  : Ενεργοποιείται όταν συμβεί κάποιο λάθος. Τότε η ιδιότητα ErrorMsg θα επιστρέψει το μήνυμα λάθους.

 

Mέθοδοι

 

1) CreateSortStringAndCollection : Δημιουργεί το SQL sort string και το SortArrayList. Χρήσιμη μέθοδος όταν δεν

                                 θέλετε να δημιουργούνται μέσω του button ΟΚ (δεν είναι ορατό) (νέο στην έκδοση 1.3).

2) SetCaption                   : Αλλάζει το caption ενός πεδίου (νέο στην έκδοση 1.1).

3) SetFieldVisible              : Καθορίζει, αν ένα πεδίο του DataTable, θα εμφανίζεται ή όχι στα combos (νέο στην

                                 έκδοση 1.5)

 

  Public Αντικείμενα

 

1)    SortFieldsArrayListItem : Ένα αντικείμενο της δομής SortFieldsArrayList

 

Παρατηρήσεις

Προσθέστε στο ToolBox της VB.NET το SortControl και χρησιμοποιήστε το ελεύθερα στις εφαρμογές σας. Το assembly αρχείο SortControl.dll θα το βρείτε στο φάκελο bin.

 

ΠΡΟΒΛΗΜΑ ΜΕ ΤΟ PROJECT ΔΕΙΓΜΑΤΟΣ ΧΡΗΣΗΣ - ΛΥΣΗ.

 

Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το sortcontrol τότε πρέπει να ενημερώσετε το Reference Path του project ώστε να ψάχνει στο φάκελο που έχετε βάλει το dll του control.

 

1) Στο Solution Explorer κάντε δεξί κλικ στο prοject και επιλέξτε Properties.

2) Στο παράθυρο ιδιοτήτων του project που ανοίγει, πηγαίνετε στο τμήμα Common Properties και Reference Path.

3) Δεξιά, πατήστε το browse button (...) για να βρείτε το Folder όπου βρίσκεται το assembly dll του control στον δικό σας υπολογιστή.

4) Πατήστε το button Update. Σώστε το project, κλείστε το και ξανανοίξτε το. Τώρα, πρέπει να εμφανίζονται όλα κανονικά.  

Επικοινωνία

Για οποιεσδήποτε παρατηρήσεις στείλτε e-mail στην παρακάτω διεύθυνση.

 

mouratx@yahoo.com

Χρήστος Μουρατίδης

 

Τι νέο υπάρχει στην έκδοση 1.5

           

Πλέον,  μπορούμε να καθορίσουμε να εμφανίζεται ή όχι ένα πεδίο του DataTable στα combos του control. Αυτό γίνεται με τη μέθοδο SetFieldVisible.

 

Π.χ.   Sortcontrol1.SetFieldVisible(ID”,False)

 

Τι νέο υπάρχει στην έκδοση 1.4

           

1)    Πλέον μπορούμε να θέσουμε στην ιδιότητα DataTableSource=Nothing, οπότε τα combos μηδενίζονται (δηλ., δεν εμφανίζονται πεδία για επιλογή). Θα πρέπει να ξαναθέσετε την ιδιότητα για να το κάνετε πάλι λειτουργικό.

 

2)    Μερικές βελτιώσεις στον κώδικα.

 

Τι νέο υπάρχει στην έκδοση 1.3

           

1)    Πλέον δεν χρειάζεται να είναι ορατό το button OK για να δημιουργηθεί το SQL sort string και το SortArrayList. Η νέα ιδιότητα VisibleBtnΟΚ καθορίζει αν θα είναι ορατό το button OK. Αν δεν είναι ορατό, τότε χρησιμοποιείστε τη νέα μέθοδο CreateSortStringAndCollection για τη δημιουργία του SQL sort string.

 

2)    H νέα μέθοδοs CreateSortStringAndCollection εξαναγκάζει το control να δημιουργήσει το SQL sort string και το SortArrayList.

 

Διορθώσεις στην έκδοση 1.2

 

1)    Θέτοντας στην ιδιότητα DataTableSource τιμή Nothing πλέον δεν εμφανίζει run-time error.

2)    Διορθώθηκε το ορθογραφικό λάθος του button Απαλειφή στο σωστό Απαλοιφή.

Τι νέο υπάρχει στην έκδοση 1.1.

 

1)      Τα comboboxes πλέον, εμφανίζουν τις περιγραφές (captions) των πεδίων και όχι τα ονόματα των πεδίων του Source DataTable. Το control, αυτομάτως, μόλις τεθεί η ιδιότητα DataTableSource, θέτει ως captions τα ονόματα των πεδίων, σε όσα δεν έχουν ήδη κάποιο caption. Δηλαδή, τυχόν υπάρχον caption δεν επηρεάζεται.

Με τη νέα μέθοδο SetCaption, μπορούμε να αλλάξουμε το caption ενός πεδίου :

 

Π.χ.                 SortControl1.SetCaption (”ΕΤΟΣ_ΓΕΝΝ”, “ Έτος γέννησης”)

 

Όπου το πεδίο του πίνακα με όνομα ΕΤΟΣ_ΓΕΝΝ αλλάζει στο πιο περιγραφικό Ετος γέννησης

 

Αυτό είναι χρήσιμο όταν, για παράδειγμα, στη δομή ενός πίνακα έχουμε πεδία στα αγγλικά και θέλουμε να εμφανίζονται στα comboboxes με ελληνικές περιγραφές.

Αυτή η προσθήκη δεν επηρεάζει την υπόλοιπη συμπεριφορά του control.

 

2)      Διορθώθηκε ένα bug που αφορούσε τον καθορισμό της ιδιότητας SortFieldsArrayList, όταν θέταμε και 3ο πεδίο ταξινόμησης..