Ένα .ΝΕΤ control για την αυτόματη δημιουργία μίας φόρμας εισόδου με χρήση στοιχείων username-password ή μόνο password. Δέχεται τα στοιχεία και τα ελέγχει με αυτά που του έχει δώσει ο προγραμματιστής εσωτερικά. Επιτρέπει ένα συγκεκριμένο αριθμό προσπαθειών Παρέχει πολλές ιδιότητες διαμόρφωσης των χαρακτηριστικών του. Στην εικόνα, βλέπετε ένα παράδειγμα:
Χρήστος Μουρατίδης, Σεπτέμβριος 2007
Τι νέο υπάρχει
στην έκδοση 1.2
Αποσυμπιέσετε με ένα πρόγραμμα συμπίεσης πχ. WinZip τα περιεχόμενα του αρχείου LoginControl.zip σε κάποιο φάκελο στο δίσκο. Θα δείτε να δημιουργείται ένας φάκελος με όνομα LoginControl Test, ο οποίος περιέχει ένα project δείγματος χρήσης του control
καθώς και το παρόν readme αρχείο. Το project παρέχει μία υποδειγματική εφαρμογή χρήσης του 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 ακύρωσης.
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.
Αν στα 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
Χρήστος Μουρατίδης
Διορθώθηκε το πρόβλημα της επιτυχούς εισόδου με μηδενικό μήκος password ή/και username.
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 (πολλαπλά)
Διορθώθηκε ένα bug που αγνοούσε τον αριθμό των προσπαθειών.