LoginControl Ver 1.3

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

 


 

Χρήστος Μουρατίδης, Σεπτέμβριος  2007

 

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

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

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

 

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

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

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

Σε αρκετές εφαρμογές, ο προγραμματιστής επιθυμεί να δημιουργεί μία φόρμα εισόδου όπου θα δίνει τη δυνατότητα στο χρήστη να εισάγει τα στοιχεία του username-password ή μόνο password προκειμένου να εισέλθει σε ένα τμήμα της εφαρμογής.. Μόλις, πατηθεί το κουμπί εισόδου, τα στοιχεία που έδωσε συγκρίνονται με τα έγκυρα που έχει καθορίσει εσωτερικά ο προγραμματιστής (στις ιδιότητες Username και Password). Αν είναι σωστά τότε ενεργοποιείται το γεγονός OnSucceed() αλλιώς εμφανίζεται μήνυμα να ξαναπροσπαθήσει, εφόσον δεν έχει ξεπεράσει τον αριθμό προσπαθειών. Ο αριθμός προσπαθειών καθορίζεται στην ιδιότητα Tries. Αν εξάντλησε τις προσπάθειες, τότε ενεργοποιείται το γεγονός OnFailed(). Αν πατήσει το κουμπί ακύρωσης τότε ενεργοποιείται το γεγονός OnCanceled().

 

Π.χ. Καθορίζοντας το έγκυρο username και password, βάσει των οποίων θα γίνει ο έλεγχος με αυτά που θα δώσει ο χρήστης :

 

  LoginControl1.Username = "chris"

        LoginControl1.Password = "cs5"

  LoginControl1.PasswordMode = PasswordModeEnum.Simple

 

Επειδή στην έκδοση 1.2 μπορούμε να ορίσουμε πολλαπλά ζευγάρια (Username, Password) (δες παρακάτω), αν θέλουμε ένα μόνο τότε χρησιμοποιούμε τις ιδιότητες Username και Password και θέτουμε στην νέα ιδιότητα PasswordMode την τιμή Simple από την απαρίθμηση PasswordModeEnum.

 

Π.χ. Καθορίζοντας των αριθμό των προσπαθειών εισόδου :

 

              LoginControl1.Tries = 3

 

 

Π.χ. Καθορίζοντας εμφάνιση μόνο password και όχι username :

 

                LoginControl1.VisibleUsername = False

 

Στην έκδοση 1.2, μπορούμε να ορίσουμε πολλαπλά ζευγάρια (Username, Password) τοποθετώντας τα σε έναν πίνακα, τύπου PasswordsArrayItemStruct

 Και κατόπιν, να εκχωρήσουμε τον πίνακα αυτόν στην νέα ιδιότητα  PasswordsArray :

 

Π.χ.        Dim passwArray(2) As PasswordsArrayItemStruct

        passwArray(0).Username = "nik" : passwArray(0).Password = "rose01"

        passwArray(1).Username = "chris" : passwArray(1).Password = "rose02"

  LoginControl1.PasswordsArray = passwArray

  LoginControl1.PasswordMode = PasswordModeEnum.Array

 

 Επειδή θέσαμε έναν πίνακα πρέπει να ενημερώσουμε το control ότι τα passwords βρίσκονται στην ιδιότητα PasswordsArray κι όχι στην Username και Password. Για το λόγο αυτό, χρησιμοποιούμε την απαρίθμηση PasswordEnumMode.    

               

Το control είναι πλήρως παραμετροποιήσιμο.  Οι ετικέτες, τα χρώματα, οι γραμματοσειρές, τα μήκη των στοιχείων που απαρτίζουν το control  μπορούν να καθοριστούν σε design ή run-time mode μέσω των αντίστοιχων ιδιοτήτων.

 

Π.χ. Καθορίζοντας το κείμενο του button εισόδου (ΟΚ), το χρώμα φόντου του και το χρώμα μελάνης :

 

  LoginControl1.ButtonOKText = "Είσοδος"

        LoginControl1.BackColorButtonOK = Color.Green

        LoginControl1.ForeColorButtonOK = Color.White

 

Π.χ. Kαθορίζοντας το font των buttons εισόδου και ακύρωσης, καθώς και το πλάτος τους σε pixels :

 

  Dim fnt As New Font("Arial", 12, FontStyle.Bold)

        LoginControl1.FontButtons = fnt

        LoginControl1.ButtonsWidth = 90

 

Αντίστοιχες ιδιότητες υπάρχουν και για τα labels των textboxes (π.χ FontLabels, LabelUsernameWidth, LabelPasswordWidth) και για τα textboxes (FontTextboxes) κ.α.

 

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

 

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

Ιδιότητες                                 

  

1)    Username                :Το έγκυρο username που πρέπει να δώσει ο χρήστης.

2)    Password                :Το έγκυρο password που πρέπει να δώσει ο χρήστης.

3)    PasswordsArray             : Δέχεται έναν πίνακα, τύπου PasswordsArrayItemStruct, που περιέχει πολλαπλά ζευγάρια

   (Username,Password). (νέο στην έκδοση 1.2)

4)    PasswordMode             : Δέχεται μία τιμή Simple ή Array από την απαρίθμηση PasswordModeEnum, ανάλογα αν έχει

   καθοριστεί απλό ή πολλαπλά ζευγάρια (Username, Password). (νέο στην έκδοση 1.2)

5)    Tries                    αριθμός των προσπαθειών.

6)    VisibleUsername         :Αν θα εμφανίζεται το τμήμα του Username.

7)    ErrorText               :Το μήνυμα λάθους στο παράθυρο λάθους μίας προσπάθειας.

8)    ErrorTitle               τίτλος στο παράθυρο λάθους μίας προσπάθειας.

9)    BackColorLabelUsername  :To Backolor του Label για το username.

10)BackColorLabelPassword  :To BackColor του Label για το password.

11)BackColorButtonOK       :To BackColor του button εισόδου.

12)BackColorButtonCancel   :To BackColor του button ακύρωσης.

13)ForeColorLabelUsername  :To ForeColor του Label για το username.

14)ForeColorLabelPassword  :To ForeColor του Label για το password.

15)ForeColorTextUsername   :To ForeColor του Textbox για το username.

16)ForeColorTextPassword   :To ForeColor του Textbox για το password.

17)ForeColorButtonOK       :To ForeColor του button εισόδου.

18)ForeColorButtonCancel   :To ForeColor του button ακύρωσης.

19)LabelUsername           :To Label για το username.

20)LabelPassword           :To Label για το password.

21)LabelUsernameWidth      :To πλάτος, σε pixels, του Label για το username.

22)  LabelPasswordWidth      :To πλάτος, σε pixels, του Label για το password.

23)  ButtonOKText            :Το text του button εισόδου.

24)  ButtonCancelText        :Το text του button ακύρωσης.

25)  ButtonsWidth            :To πλάτος, σε pixels, των buttons εισόδου και ακύρωσης.

26)  FontLabels              :Το Font των Labels για το username και password.

27)  FontTextboxes           :Το Font των Textboxes για το username και password.

28)  FontButtons             :Το Font των buttonς εισόδου και ακύρωσης.

 

Γεγονότα

 

1)    ΟnSucceed()       : Ενεργοποιείται όταν πατηθεί το button εισόδου και τα στοιχεία δόθηκαν σωστά.

2)    ΟnFailed()        : Ενεργοποιείται όταν εξαντλήθηκαν οι προσπάθειες και δεν δόθηκαν σωστά τα στοιχεία.

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

 

Mέθοδοι

 

 

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

           

1.      Δομή  PasswordsArrayItemStruct που περιέχει δύο μεταβλητές :   (νέο στην έκδοση 1.2)

                         Username, τύπου string

             Password, τύπου string

 

Χρησιμοποιείται για να οριστεί ένας πίνακας που θα περιέχει ως τιμές αντικείμενα της δομής αυτής, δηλ., ζευγάρια (Username, Password)

 

2.      Απαρίθμηση PasswordModeEnum που περιέχει δύο ονομαστικές τιμές :  (νέο στην έκδοση 1.2)

                                                Simple ,  αν θέλουμε να χρησιμοποιήσουμε τις ιδιότητες Username και Password (απλό)

  Array  , αν θέλουμε να χρησιμοποιήσουμε την ιδιότητα PasswordsArray (πολλαπλά)

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

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

θα το βρείτε στο φάκελο bin.

 

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

 

Αν στα References του project δείγματος χρήσης εμφανίζει με κίτρινο θαυμαστικό το Logincontrol τότε πρέπει να ενημερώσετε το 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.3

 

Διορθώθηκε το πρόβλημα της επιτυχούς εισόδου με μηδενικό μήκος password ή/και username.

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

 

1.      Μπορούμε πλέον να ορίσουμε πολλαπλά ζευγάρια (Username, Password).  Αυτό γίνεται αν ορίσουμε έναν πίνακα, τύπου PasswordsArrayItemStruct, και να τον εκχωρήσουμε στην ιδιότητα PasswordsArray :

           

Π.χ. Dim passwArray(2) As PasswordsArrayItemStruct

        passwArray(0).Username = "nik" : passwArray(0).Password = "rose01"

        passwArray(1).Username = "chris" : passwArray(1).Password = "rose02"

  LoginControl1.PasswordsArray = passwArray

  LoginControl1.PasswordMode = PasswordModeEnum.Array

 

 Επειδή θέσαμε έναν πίνακα πρέπει να ενημερώσουμε το control ότι τα passwords βρίσκονται στην ιδιότητα PasswordsArray κι όχι στην Username και Password. Για το λόγο αυτό, χρησιμοποιούμε την απαρίθμηση PasswordEnumMode.

 

2.      Η ιδιότητα  PasswordMode  δηλώνει αν θα χρησιμοποιηθεί απλό Username και Password από τις αντίστοιχες ιδιότητες ή πολλαπλά που θα τα πάρει από την ιδιότητα PasswordsArray :

 

Π.χ.  LoginControl1.PasswordMode = PasswordModeEnum.Array

 

Νέα αντικείμενα :

 

3.      Δομή  PasswordsArrayItemStruct που περιέχει δύο μεταβλητές :  

                         Username, τύπου string

             Password, τύπου string

 

Χρησιμοποιείται για να οριστεί ένας πίνακας που θα περιέχει ως τιμές αντικείμενα της δομής αυτής, δηλ., ζευγάρια (Username, Password)

 

4.      Απαρίθμηση PasswordModeEnum που περιέχει δύο ονομαστικές τιμές :

                                                Simple ,  αν θέλουμε να χρησιμοποιήσουμε τις ιδιότητες Username και Password (απλό)

  Array  , αν θέλουμε να χρησιμοποιήσουμε την ιδιότητα PasswordsArray (πολλαπλά)

 

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

 

Διορθώθηκε ένα bug που αγνοούσε τον αριθμό των προσπαθειών.