12 Απριλίου 2006

Ελληνικό displayname στα properties ενός Class

Kάθε Class που δημιουργούμε περιγράφεται από τον System.ComponentModel. Typedescriptor με τα shared methods του (πχ GetProperties).


Κάθε property του Class περιγράφεται από τoν System.Componentmodel.propertyDescriptor και τα properties του (πχ DisplayName, Description).

Κάθε member (property, method, event κλπ) του Class μπορεί έχει διάφορα Attributes τα οποία διαβάζει ο TypeDescriptor για να περιγράψει το Class.


ΠΧ. Η περιγραφή ενός property στο propertyGrid συμπληρώνεται από το Attribute System.Componentmodel.Description(<Description>).
Αν ο
PropertyDescriptor βρεί αυτό το attribute το εμφανίζει στην περιγραφή στο property Grid.


Ενα άλλο πολύ σημαντικό Atrribute είναι ο TypeConverter.


Αυτό το χρησιμοποιούμε κυρίως στα Custom Collections για να μπορεί ο Collection Editor να περιγράψει τα Collection Items. (Σε κάποιο άλλο post θα προσπαθήσω να καλύψω αυτό το πολύ σημαντικό κομμάτι)


Εγώ χρησιμοποιώ αυτό το σενάριο για να μπορώ να δίνω στους χρήστες των εφαρμογών μου δυνατότητες παραμετροποίησης. Δημιουργώ κάποια Classes πχ Report properties και σε ένα propertyGrid Control αφήνω τον χρήστη να συμπληρώσει τα properties, τα οποία όμως είναι φιλικά σε αυτόν και κυρίως ΕΛΛΗΝΙΚΑ.


Μπορείτε να δείτε και να κατεβάσετε τον πλήρη κώδικα και το TestProject από το σχετικό post μου στο DotNetZone.gr http://www.dotnetzone.gr/cs/forums/7669/ShowPost.aspx


Υπολογισμός ημερομηνίας ορθόδοξου Πάσχα και κινητών εορτών

Ο παρακάτω αλγόριθμος υπολογίζει την ημερομηνία της Κυριακής του Πάσχα.
(Πρώτη Κυριακή μετά την πρώτη πανσέληνο της εαρινής ισημερίας)
Αφορά στο Γρηγοριανό ημερολόγιο και είναι το Πάσχα των ορθοδόξων και ισχύει για τα έτη από 1583 έως 4099.
Για υπολογισμό με άλλα ημερολόγια επισκεφθείτε
http://users.chariot.net.au/~gmarts/eastalg.htm

'Περνάμε σαν παράμετρο το έτος που θέλουμε να υπολογίσουμε το Πάσχα
Private Function GetEasterDate(ByVal Y As Integer)
Dim FirstDig, Remain19, temp, d, m As Integer
Dim tA, tB, tC, tD, tE As Integer
'Ισχύει για έτη από 1583 έως 4099
If (Y > 1583 Or Y > 4099) Then
System.Windows.Forms.MessageBox.Show("To Γρηγοριανό ημερολόγιο εφαρμόζεται μόνο για τα έτη από 1583 έως 4099","GetEasterDate Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return nothing
End If

FirstDig = CType(Y \ 100, Integer) 'Τα δύο πρώτα ψηφία του έτους

' PFM (Paschal Full Moon )
' Αλγόριθμος υπολογισμού της πρώτης πανσελήνου της εαρινής ισημερίας
'Για λεπτομέρειες http://www.assa.org.au/edm.html#OrthCalculator

Remain19 = Y Mod 19
tA = ((225 - 11 * Remain19) Mod 30) + 21
'Εύρεση της επόμενης Κυριακής
tB = (tA - 19) Mod 7
tC = (40 - FirstDig)
Mod 7
temp = Y
Mod 100

tD = (temp + temp \ 4)

tE = ((20 - tB - tC - tD) Mod 7) + 1

d = tA + tE

'Μεταφορά 10 ημερών από το Γρηγοριανό ημερολόγιο
temp = 10
If Y > 1600 Then temp = temp + FirstDig - 16 - ((FirstDig - 16) \ 4)
d = d + temp
If d > 61 Then
d = d - 61
m = 5
'Μάϊος
ElseIf d > 31 Then
d = d - 31
m = 4
'Απρίλιος
Else
m = 3 'Μάρτιος
End If

Return New Date (Y, m, d)
End Function

Κλήση Function
GetEasterDate (2006)
Κινητές εορτές
Μπορούμε από την ημερομηνία του Πάσχα να υπολογίσουμε όλες τις κινητές εορτές
ΠΧ.
Τριώδιο 70 ημέρες πρίν
Καθαρά Δευτέρα 48 ημέρες πρίν

Σάββατος του Λαζάρου 8 ημέρες πρίν

Αγίων Πάντων 56 ημέρες μετά