#103669# finnish, polish, turkish and greek holidays added
This commit is contained in:
parent
8ca058256c
commit
e9a0e520a8
6 changed files with 219 additions and 181 deletions
|
@ -28,11 +28,8 @@ Dim B%,C%,D%,E%,F%,G%,H%,I%,K%,L%,M%,N%,O%, nMonth%, nDay%
|
|||
End Function
|
||||
|
||||
|
||||
' Note: the following algorithm is valid only till the Year 2100.
|
||||
' but I have no Idea from which date in the paste it is valid
|
||||
Function CalOrthodoxEasterTable(ByVal iYear as Integer) as Long
|
||||
Dim R1%, R2%, R3%, RA%, R4%, RB%, R5%, RC%
|
||||
Dim lDate as Long
|
||||
R1 = iYear mod 19
|
||||
R2 = iYear mod 4
|
||||
R3 = iYear mod 7
|
||||
|
@ -41,8 +38,7 @@ Dim lDate as Long
|
|||
RB = 2 * R2 + 4 * R3 + 6 * R4
|
||||
R5 = RB mod 7
|
||||
RC = R4 + R5
|
||||
lDate = DateSerial(iYear, 4,4)
|
||||
CalOrthodoxEasterTable() = lDate + RC
|
||||
' Todo: Add the result to March 22;
|
||||
End Function
|
||||
|
||||
|
||||
|
@ -124,30 +120,26 @@ End Function
|
|||
|
||||
|
||||
Sub CalInsertOwnDataInTables(ByVal iSelYear as Integer)
|
||||
' Fügt die eigenen Individuellen Daten aus der Tabelle in die
|
||||
' bereits erstellte unsortierte Tabelle ein.
|
||||
' inserts the individual data from the table into the previously unsorted list
|
||||
Dim CurEventName as String
|
||||
Dim CurYear as Integer
|
||||
Dim CurMonth as Integer
|
||||
Dim CurDay as Integer
|
||||
Dim CurEvYear as Integer
|
||||
Dim CurEvMonth as Integer
|
||||
Dim CurEvDay as Integer
|
||||
Dim LastIndex as Integer
|
||||
Dim i as Integer
|
||||
Dim DateStr as String
|
||||
LastIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())
|
||||
For i = 0 To LastIndex
|
||||
CurYear = CalGetYearOfEvent(i)
|
||||
If DlgCalModel.lstOwnData.StringItemList(i) <> "" Then
|
||||
If (CurYear = iSelYear) Or (CurYear = 0) Then
|
||||
CurMonth = CalGetMonthofEvent(i)
|
||||
CurDay = CalGetDayofEvent(i)
|
||||
If GetSelectedDateUnits(CurEvDay, CurEvMonth, CurEvYear, i) <> SBDATEUNDEFINED Then
|
||||
If (CurEvYear = iSelYear) Or (CurEvYear = SBYEARUNDEFINED) Then
|
||||
CurEventName = CalGetNameOfEvent(i)
|
||||
CalInsertBankholiday(DateSerial(CurYear, CurMonth, CurDay), CurEventName, cHolidayType_Own)
|
||||
CalInsertBankholiday(DateSerial(CurEvYear, CurEvMonth, CurEvDay), CurEventName, cHolidayType_Own)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
' Finds eg the first,second Monday in a month
|
||||
' Note: in This Function the week starts with the Sunday
|
||||
Function GetMonthDate(YearInt as Integer, iMonth as Integer, iWeekDay as Integer, iOffset as Integer)
|
||||
|
@ -186,8 +178,8 @@ End Function
|
|||
|
||||
Sub AddFollowUpHolidays(ByVal lStartDate as Long, iCount as Integer, HolidayName as String, iType as Integer)
|
||||
Dim lDate as Long
|
||||
For lDate = lStartDate + 1 To lStartDate + iCount
|
||||
For lDate = lStartDate + 1 To lStartDate + 4
|
||||
CalInsertBankholiday(lDate, HolidayName, iType)
|
||||
Next lDate
|
||||
Next i
|
||||
End Sub
|
||||
</script:module>
|
|
@ -61,6 +61,8 @@ Public CONST CalBLThueringen = 16
|
|||
|
||||
Public DlgCalendar as Object
|
||||
Public DlgCalModel as Object
|
||||
Public lDateFormat as Long
|
||||
Public lDateStandardFormat as Long
|
||||
|
||||
|
||||
|
||||
|
@ -111,6 +113,7 @@ Dim iThisMonth as Integer
|
|||
.txtYear.Tag = .txtYear.Value
|
||||
.Step = 1
|
||||
End With
|
||||
SetupNumberFormatter(sCurLangLocale, sCurCountryLocale)
|
||||
CalChooseCalendar() ' month
|
||||
iThisMonth = Month(Now)
|
||||
DlgCalendar.GetControl("lstMonth").SelectItemPos(iThisMonth-1, True)
|
||||
|
@ -129,6 +132,42 @@ ErrorHandler:
|
|||
End Sub
|
||||
|
||||
|
||||
Sub SetupNumberFormatter(sCurLangLocale as String, sCurCountryLocale as String)
|
||||
Dim oFormats as Object
|
||||
Dim DateFormatString as String
|
||||
oFormats = oDocument.getNumberFormats()
|
||||
Select Case sCurLangLocale
|
||||
Case "en"
|
||||
DateFormatString = "DD/MMM"
|
||||
Case "pt"
|
||||
Case "ru"
|
||||
Case "nl"
|
||||
Case "fr"
|
||||
Case "es"
|
||||
Case "it"
|
||||
Case "da"
|
||||
Case "sv"
|
||||
Case "pl"
|
||||
Case "de"
|
||||
DateFormatString = "TT.MMM"
|
||||
Case "tr"
|
||||
Case "ja"
|
||||
Case "zh"
|
||||
' If sCurCountryLocale = "CN" Then
|
||||
' Else
|
||||
' End If
|
||||
Case "ar"
|
||||
Case "ko"
|
||||
End Select
|
||||
lDateFormat = AddNumberFormat(oFormats, DateFormatString, oDocument.CharLocale)
|
||||
lDateStandardFormat = oFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocument.CharLocale)
|
||||
|
||||
' lDateStandardFormat = AddNumberFormat(oFormats, StandardDateFormatString, oDocument.CharLocale)
|
||||
oNumberFormatter = createUNOService("com.sun.star.util.NumberFormatter")
|
||||
oNumberFormatter.attachNumberFormatsSupplier(oDocument)
|
||||
End Sub
|
||||
|
||||
|
||||
Function AddNumberFormat(oNumberFormats as Object, FormatString as String, oLocale as Object) as Long
|
||||
Dim lLocDateFormat as Long
|
||||
lLocDateFormat = oNumberFormats.QueryKey(FormatString, oLocale, True)
|
||||
|
@ -158,6 +197,7 @@ Sub CalcmdOk()
|
|||
' It is either given out a month or a year
|
||||
Dim i, iSelYear as Integer
|
||||
Dim SelYear as String
|
||||
' DlgCalendar.Visible = False
|
||||
|
||||
oSheets = oDocument.sheets
|
||||
Call CalSaveOwnData()
|
||||
|
|
|
@ -20,7 +20,7 @@ Dim MsgBoxResult as Integer
|
|||
MsgBoxResult = MsgBox(cCalSubcmdDeleteSelect_DeleteSelEntry$, 4+32, cCalSubcmdDeleteSelect_DeleteSelEntryTitle$)
|
||||
If MsgBoxResult = 6 Then
|
||||
DlgCalModel.lstOwnData.StringItemList() = RemoveSelected(DlgCalModel.lstOwnData)
|
||||
' Flag zum Speichern der neuen Daten.
|
||||
' Flag to store the new data
|
||||
bCalOwnDataChanged = True
|
||||
DlgCalModel.cmdDelete.Enabled = Ubound(DlgCalModel.lstOwnData.StringItemList()) > -1
|
||||
Call CalClearInputMask()
|
||||
|
@ -39,9 +39,6 @@ End Sub
|
|||
|
||||
|
||||
Sub ToggleYearBox()
|
||||
' Falls der RadioButton für einen Jahreskalender angeklickt
|
||||
' worden ist, müssen die Controls für den Monat Disabled
|
||||
' werden, da ihre Werte in einer Jahrestabelle aufgehen.
|
||||
With DlgCalModel
|
||||
.txtOwnEventYear.Enabled = .chkEventOnce.State = 1
|
||||
.lblEventYear.Enabled = .chkEventOnce.State = 1
|
||||
|
@ -82,7 +79,6 @@ End Sub
|
|||
|
||||
Sub CalClearInputMask()
|
||||
Dim NullList() as String
|
||||
' Löscht die Werte der Eingabe Controls für ein neues Ereignis.
|
||||
With DlgCalModel
|
||||
.chkEventOnce.State = 0
|
||||
.lblEventYear.Enabled = False
|
||||
|
@ -93,13 +89,10 @@ Dim NullList() as String
|
|||
.cmdInsert.Enabled = False
|
||||
End With
|
||||
DlgCalendar.GetControl("lstOwnEventMonth").SelectItemPos(0,True)
|
||||
CurOwnMonth = 1
|
||||
End Sub
|
||||
|
||||
|
||||
Sub CalmdSwitchOwnDataOrGeneral()
|
||||
'Ändert den Titel der Dialogbox beim Seitenwechsel und die
|
||||
'Beschriftungen der Knöpfe
|
||||
If DlgCalModel.Step = 1 Then
|
||||
DlgCalModel.Step = 2
|
||||
DlgCalModel.cmdOwnData.Label = cCalSubcmdSwitchOwnDataOrGeneral_Back$
|
||||
|
@ -125,32 +118,35 @@ Dim bDoEnable as Boolean
|
|||
Dim sSelectedItem
|
||||
Dim ListIndex as Integer
|
||||
Dim MaxSelIndex as Integer
|
||||
Dim iMonth as Integer
|
||||
Dim CurEvYear as Integer
|
||||
Dim CurEvMonth as Integer
|
||||
Dim CurEvDay as Integer
|
||||
Dim DateStr as String
|
||||
bDoEnable = False
|
||||
With DlgCalModel
|
||||
MaxSelIndex = Ubound(DlgCalModel.lstOwnData.SelectedItems())
|
||||
If MaxSelIndex > -1 Then
|
||||
ListIndex = .lstOwnData.SelectedItems(MaxSelIndex)
|
||||
.txtEvent.Text = CalGetNameofEvent(ListIndex)
|
||||
.txtOwnEventDay.Value = CalGetDayOfEvent(ListIndex)
|
||||
iMonth = CalGetMonthOfEvent(ListIndex)
|
||||
DlgCalendar.GetControl("lstOwnEventMonth").SelectItemPos(iMonth-1, True)
|
||||
CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1
|
||||
If CalGetYearofEvent(ListIndex) <> 0 Then
|
||||
.txtOwnEventYear.Value = CalGetYearofEvent(ListIndex)
|
||||
bDoEnable = True
|
||||
If GetSelectedDateUnits(CurEvDay, CurEvMonth, CurEvYear, ListIndex) <> SBDATEUNDEFINED Then
|
||||
.txtOwnEventDay.Value = CurEvDay
|
||||
DlgCalendar.GetControl("lstOwnEventMonth").SelectItemPos(CurEvMonth-1, True)
|
||||
If CurEvYear <> SBYEARUNDEFINED Then
|
||||
.txtOwnEventYear.Value = CurEvYear
|
||||
bDoEnable = True
|
||||
Else
|
||||
bDoEnable = False
|
||||
DlgCalModel.txtOwnEventYear.SetPropertyToDefault("Value")
|
||||
End If
|
||||
.chkEventOnce.State = Abs(bDoEnable)
|
||||
.lblEventYear.Enabled = bDoEnable
|
||||
.txtOwnEventYear.Enabled = bDoEnable
|
||||
.cmdDelete.Enabled = True
|
||||
.cmdInsert.Enabled = True
|
||||
Else
|
||||
bDoEnable = False
|
||||
DlgCalModel.txtOwnEventYear.SetPropertyToDefault("Value")
|
||||
Call CalClearInputMask()
|
||||
.cmdDelete.Enabled = False
|
||||
End If
|
||||
.chkEventOnce.State = Abs(bDoEnable)
|
||||
.lblEventYear.Enabled = bDoEnable
|
||||
.txtOwnEventYear.Enabled = bDoEnable
|
||||
.cmdDelete.Enabled = True
|
||||
.cmdInsert.Enabled = True
|
||||
Else
|
||||
Call CalClearInputMask()
|
||||
.cmdDelete.Enabled = False
|
||||
End If
|
||||
End With
|
||||
End Sub</script:module>
|
|
@ -68,17 +68,6 @@ End Function
|
|||
|
||||
|
||||
Sub CalFindWholeYearHolidays_GERMANY(ByVal iSelYear as Integer, ByVal iCountry as Integer)
|
||||
|
||||
' Ermittelt die Feiertage eines gesamten Jahres (Parameter iSelYear),
|
||||
' bezogen auf ein bestimmtes Bundesland (Parameter iCountry). Kein
|
||||
' bestimmtes Bundesland bedeutet, dass der Parameter gleich der
|
||||
' Konstante calBLHamburg ist, da Hamburg nur Standardfeiertage kennt.
|
||||
' Die Feiertage werden in das Array CalBankHolidayName$ geschrieben.
|
||||
' Der Index dieses Arrays geht bis vierhundert. Der 1. Januar hat den
|
||||
' Indexwert 1, der 2. Januar den Indexwert 2 usw. Das bedeutet, daß
|
||||
' wenn am 2. Januar kein Feiertag existiert, liefert
|
||||
' CalBankHolidayName$(DateSerial(0, 1, 2) eine leere Zeichenkette ("").
|
||||
|
||||
Dim So as Integer
|
||||
Dim OsternDate&, VierterAdvent&
|
||||
|
||||
|
@ -129,7 +118,7 @@ Sub CalFindWholeYearHolidays_GERMANY(ByVal iSelYear as Integer, ByVal iCountry a
|
|||
CalInsertBankholiday(vierterAdvent-32, "Buß- und Bettag", cHolidayType_Full)
|
||||
Else
|
||||
CalInsertBankholiday(vierterAdvent-32, "Buß- und Bettag", cHolidayType_Half)
|
||||
End If ' Dank an die EKD für die Berechnungsvorschrift des Buß- und Bettags!
|
||||
End If
|
||||
CalInsertBankholiday(vierterAdvent-21, "1. Advent", cHolidayType_Full)
|
||||
CalInsertBankholiday(vierterAdvent-14, "2. Advent", cHolidayType_Full)
|
||||
CalInsertBankholiday(vierterAdvent-7, "3. Advent", cHolidayType_Full)
|
||||
|
|
|
@ -168,7 +168,6 @@ Dim lDate as Long
|
|||
CalInsertBankholiday(DateSerial(YearInt, 10, 29), "Cumhuriyet Bayramı", cHolidayType_Full)
|
||||
' Commemoration Of Ataturk-Anniversary of Ataturk's Death
|
||||
CalInsertBankholiday(DateSerial(YearInt, 11, 10), "Atatürk'ün Ölüm Günü", cHolidayType_Full)
|
||||
CalculateturkishReligousHolidays(YearInt)
|
||||
End Sub
|
||||
|
||||
|
||||
|
@ -182,7 +181,7 @@ Dim lRamazanBayRamStartDate as Long
|
|||
lRamazanBayRamStartDate = DateSerial(iSelYear, 12, 4)
|
||||
Case 2003
|
||||
lKurbanBayRamStartDate = DateSerial(iSelYear, 2, 10)
|
||||
lRamazanBayRamStartDate = DateSerial(iSelYear, 11, 24)
|
||||
lRamazanBayRamStartDate = DateSerial(iSelYear, 11, 14)
|
||||
Case 2004
|
||||
lKurbanBayRamStartDate = DateSerial(iSelYear, 1, 31)
|
||||
lRamazanBayRamStartDate = DateSerial(iSelYear, 11, 13)
|
||||
|
@ -200,7 +199,7 @@ Dim lRamazanBayRamStartDate as Long
|
|||
lKurbanBayRamStartDate = DateSerial(iSelYear, 1, 1)
|
||||
' Note: The first day has already been in 2006!!!
|
||||
AddFollowUpHolidays(lKurbanBayRamStartDate-1, 3, "Kurban Bayram", cHolidayType_Full)
|
||||
lKurbanBayRamStartDate = DateSerial(iSelYear, 12, 19)
|
||||
lKurbanBayRamStartDate = DateSerial(iSelYear, 12, 20)
|
||||
|
||||
lRamazanBayRamStartDate = DateSerial(iSelYear, 10, 11)
|
||||
Case 2008
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
||||
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="OwnEvents" script:language="StarBasic">Option Explicit
|
||||
|
||||
Dim CurOwnMonth as Integer
|
||||
Public Const SBYEARUNDEFINED as Integer = -400
|
||||
Public Const SBDATEUNDEFINED as Double = -98765432.1
|
||||
|
||||
Sub Main
|
||||
Call CalAutopilotTable()
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Sub CalSaveOwnData()
|
||||
Dim FileName as String
|
||||
Dim FileChannel as Integer
|
||||
|
@ -31,160 +31,188 @@ Dim LocList() as String
|
|||
End Sub
|
||||
|
||||
|
||||
Function CalCreateDateFromInput() as Date
|
||||
' Generiert aus den Eingabedaten der Ereignisseite
|
||||
' ein Datum im Dateserial Format,
|
||||
Dim newDate as Date
|
||||
Dim EvDay as Integer
|
||||
Dim EvYear as Integer
|
||||
EvDay = DlgCalModel.txtOwnEventDay.Value
|
||||
If DlgCalModel.chkEventOnce.State = 1 Then
|
||||
EvYear = DlgCalModel.txtOwnEventYear.Value
|
||||
newDate = DateSerial(EvYear, CurOwnMonth, EvDay)
|
||||
Else
|
||||
newDate = DateSerial(0, CurOwnMonth, EvDay)
|
||||
End If
|
||||
CalCreateDateFromInput = newDate
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Function CalCreateDateStrOfInput() as String
|
||||
Dim DateStr as String
|
||||
Dim EvMonth as Integer
|
||||
Dim EvDay as Integer
|
||||
Dim CurMonthStr as String
|
||||
EvDay = DlgCalModel.txtOwnEventDay.Value
|
||||
If EvDay < 10 Then
|
||||
DateStr = "0" & EvDay & ". "
|
||||
Dim CurOwnYear as Integer
|
||||
Dim CurOwnMonth as Integer
|
||||
Dim CurOwnDay as Integer
|
||||
Dim FormatDateStr as String
|
||||
Dim dblDate as Double
|
||||
Dim iLen as Integer
|
||||
Dim iDiff as Integer
|
||||
Dim i as Integer
|
||||
CurOwnYear = DlgCalModel.txtOwnEventYear.Value
|
||||
CurOwnDay = DlgCalModel.txtOwnEventDay.Value
|
||||
CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getselectedItemPos() + 1
|
||||
if DlgCalModel.chkEventOnce.State = 1 Then
|
||||
DateStr = DateSerial(CurOwnYear, CurOwnMonth, CurOwnDay)
|
||||
dblDate = CDbl(DateValue(DateStr))
|
||||
FormatDateStr = oNumberFormatter.convertNumberToString(lDateStandardFormat, dblDate)
|
||||
else
|
||||
DateStr = DateSerial(0, CurOwnMonth, CurOwnDay)
|
||||
dblDate = CDbl(DateValue(DateStr))
|
||||
FormatDateStr = oNumberFormatter.convertNumberToString(lDateFormat, dblDate)
|
||||
End If
|
||||
iLen = Len(FormatDateStr)
|
||||
iDiff = 16 - iLen
|
||||
If iDiff > 0 Then
|
||||
For i = 0 To iDiff
|
||||
FormatDateStr = FormatDateStr + " "
|
||||
Next i
|
||||
Else
|
||||
DateStr = Cstr(EvDay) & ". "
|
||||
End If
|
||||
CurMonthStr = DlgCalModel.lstOwnEventMonth.StringItemList(CurOwnMonth-1)
|
||||
If Len(CurMonthStr) = 2 Then
|
||||
CurMonthStr = CurMonthStr & " "
|
||||
End If
|
||||
DateStr = DateStr & CurMonthStr
|
||||
|
||||
If DlgCalModel.chkEventOnce.State = 1 And DlgCalModel.txtOwnEventYear.Value <> 0 Then
|
||||
DateStr = DateStr & " " + DlgCalModel.txtOwnEventYear.Value
|
||||
Else
|
||||
DateStr = DateStr + " "
|
||||
End If
|
||||
DateStr = DateStr + " " + Trim(DlgCalModel.txtEvent.Text)
|
||||
MsgBox("Invalid DateFormat: 'FormatDateStr'", 16, sWizardTitle)
|
||||
CalCreateDateStrOfInput = ""
|
||||
Exit Function
|
||||
End If
|
||||
DateStr = FormatDateStr & Trim(DlgCalModel.txtEvent.Text)
|
||||
CalCreateDateStrOfInput = DateStr
|
||||
End Function
|
||||
|
||||
|
||||
Function CalGetDateWithoutYear&(ByVal i as Integer)
|
||||
CalGetDateWithoutYear& = DateSerial(0, CalGetMonthOfEvent(i), CalGetDayOfEvent(i))
|
||||
End Function
|
||||
|
||||
|
||||
Sub CalcmdInsertData()
|
||||
Dim MaxIndex as Integer
|
||||
Dim UIDateStr as String
|
||||
Dim DateStr as String
|
||||
Dim LastIndex as Integer
|
||||
Dim bGetYear as Boolean
|
||||
Dim NewDate as Date
|
||||
Dim NewDate as Double
|
||||
Dim bInserted as Boolean
|
||||
Dim bDateDoubled as Boolean
|
||||
Dim EvYear as Integer
|
||||
Dim i as Integer
|
||||
Dim CurDate as Date
|
||||
Dim CurEvYear as Integer
|
||||
Dim CurEvMonth as Integer
|
||||
Dim CurEvDay as Integer
|
||||
|
||||
Dim CurOwnDay as Integer
|
||||
Dim CurOwnMonth as Integer
|
||||
Dim CurOwnYear as Integer
|
||||
CurOwnDay = DlgCalModel.txtOwnEventDay.Value
|
||||
CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getSelectedItemPos() + 1
|
||||
bGetYear = DlgCalModel.chkEventOnce.State = 1
|
||||
LastIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())
|
||||
If bGetYear Then
|
||||
EvYear = DlgCalModel.txtOwnEventYear.Value
|
||||
CurOwnYear = DlgCalModel.txtOwnEventYear.Value
|
||||
Else
|
||||
CurOwnYear = SBYEARUNDEFINED
|
||||
End If
|
||||
|
||||
newDate = CalCreateDateFromInput()
|
||||
DateStr = CalCreateDateStrOfInput()
|
||||
If DateStr = "" Then Exit Sub
|
||||
|
||||
' Es ist noch garnichts vorhanden
|
||||
If Ubound(DlgCalModel.lstOwnData.StringItemList()) = -1 Then
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, 0 + 1)
|
||||
UIDateStr = CalCreateDateStrOfInput()
|
||||
NewDate = GetDateUnits(CurOwnDay, CurOwnMonth, CurOwnYear, UIDateStr)
|
||||
If UIDateStr = "" Then Exit Sub
|
||||
MaxIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())
|
||||
If MaxIndex = -1 Then
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, 0 + 1)
|
||||
bInserted = True
|
||||
Else
|
||||
' gleiche jahre(auch keine Jahre sind gleiche jahre)->alt löschen neu rein
|
||||
Dim CurEvYear(MaxIndex) as Integer
|
||||
Dim CurEvMonth(MaxIndex) as Integer
|
||||
Dim CurEvDay(MaxIndex) as Integer
|
||||
Dim CurDate(MaxIndex) as Double
|
||||
|
||||
' same Years("no years" are treated like same years) -> delete old entry and insert new one
|
||||
i = 0
|
||||
Do
|
||||
CurEvYear = CalGetYearOfEvent(i)
|
||||
CurEvMonth = CalGetMonthOfEvent(i)
|
||||
CurEvDay = CalGetDayOfEvent(i)
|
||||
If DateSerial(CurEvYear, CurEvMonth, CurEvDay) = NewDate Then
|
||||
' Todo: Abchecken wie das ist mit 'Ereignis einmalig' oder nicht
|
||||
DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1)
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
|
||||
bInserted = True
|
||||
End If
|
||||
CurDate(i) = GetSelectedDateUnits(CurEvDay(i), CurEvMonth(i), CurEvYear(i), i)
|
||||
' If CurEvYear(i) <> SBYEARUNDEFINED Then
|
||||
If CurDate(i) = NewDate Then
|
||||
DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1)
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i)
|
||||
bInserted = True
|
||||
End If
|
||||
' End If
|
||||
i = i + 1
|
||||
Loop Until bInserted Or i > LastIndex
|
||||
Loop Until bInserted Or i > MaxIndex
|
||||
|
||||
' Es existiert ein Datum mit Jahreszahl. Es wird dasselbe Datum
|
||||
' ohne Angabe der Jahreszahl angegeben.
|
||||
' There exists a date with a certain year number.
|
||||
If Not bInserted And Not bGetYear Then
|
||||
i = 0
|
||||
Do
|
||||
bInserted = CalGetDateWithoutYear(i) = newDate
|
||||
If bInserted Then
|
||||
If CalGetYearOfEvent(i) <> 0 Then
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i+1)
|
||||
If CurEvYear(i) <> SBYEARUNDEFINED Then
|
||||
If (CurEvMonth(i) = CurOwnMonth) And (CurEvDay(i) = CurOwnDay) Then
|
||||
bInserted = True
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
i = i + 1
|
||||
Loop Until bInserted Or i > LastIndex
|
||||
Loop Until bInserted Or i > MaxIndex
|
||||
End If
|
||||
|
||||
' Das einzufügende Datum besitzt eine Jahreszahl, es gibt bereits
|
||||
' das Datum in der Liste, jedoch ohne Datum.
|
||||
' the date to be inserted owns a year number. It exists already such a date in the list but without year number
|
||||
If Not bInserted And bGetYear Then
|
||||
i = 0
|
||||
Do
|
||||
bInserted = CalGetDateWithoutYear(i) = newDate
|
||||
i = i + 1
|
||||
If bInserted Then
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
|
||||
If CurEvYear(i) = SBYEARUNDEFINED Then
|
||||
If (CurEvMonth(i) = CurOwnMonth) And (CurEvDay(i) = CurOwnDay) Then
|
||||
bInserted = true
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i)
|
||||
End If
|
||||
End If
|
||||
Loop Until bInserted Or i > LastIndex
|
||||
i = i + 1
|
||||
Loop Until bInserted Or i > MaxIndex
|
||||
End If
|
||||
|
||||
' Das Datum ist noch nicht vorhanden und wird richtig einsortiert
|
||||
If Not bInserted And Not bDateDoubled Then
|
||||
' The date is not yet existing and will will be sorted in accordingly
|
||||
If Not bInserted Then
|
||||
i = 0
|
||||
Do
|
||||
CurDate = CalGetDateWithoutYear(i)
|
||||
bInserted = newDate < CurDate
|
||||
bInserted = NewDate < CurDate(i)
|
||||
If bInserted Then
|
||||
Exit Do
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i)
|
||||
End If
|
||||
i = i + 1
|
||||
Loop Until bInserted Or i > LastIndex
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
|
||||
Loop Until bInserted Or i > MaxIndex
|
||||
If Not bInserted Then
|
||||
DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, MaxIndex+1)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
bCalOwnDataChanged = True
|
||||
|
||||
Call CalClearInputMask()
|
||||
End Sub
|
||||
|
||||
|
||||
Function CalGetYearOfEvent(ByVal ListIndex as Integer) as Integer
|
||||
Dim YearStr as String
|
||||
YearStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
|
||||
CalGetYearOfEvent = Val(Mid(YearStr, 10, 4))
|
||||
Function GetSelectedDateUnits(CurEvDay as Integer, CurEvMonth as Integer, CurEvYear as Integer, i as Integer) as Double
|
||||
Dim dblDate as Double
|
||||
Dim DateStr as String
|
||||
dblDate = SBDATEUNDEFINED
|
||||
DateStr = DlgCalModel.lstOwnData.StringItemList(i)
|
||||
If DateStr <> "" Then
|
||||
dblDate = GetDateUnits(CurEvDay, CurEvMonth, CurEvYear, DateStr)
|
||||
End If
|
||||
GetSelectedDateUnits() = dblDate
|
||||
End Function
|
||||
|
||||
|
||||
Function CalGetDayOfEvent(ByVal ListIndex as Integer) as Integer
|
||||
Dim DayStr as String
|
||||
DayStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
|
||||
CalGetDayOfEvent = Val(Left(DayStr,2))
|
||||
Function GetDateUnits(CurEvDay as Integer, CurEvMonth as Integer, CurEvYear as Integer, DateStr) as Double
|
||||
Dim bEventOnce as String
|
||||
Dim LocDateStr as String
|
||||
Dim dblDate as Double
|
||||
Dim lDate as Long
|
||||
LocDateStr = Mid(DateStr, 1, 15)
|
||||
LocDateStr = Trim(LocDateStr)
|
||||
|
||||
bEventOnce = True
|
||||
On Local Error GoTo NOSTANDARDDATEFORMAT
|
||||
dblDate = oNumberFormatter.convertStringToNumber(lDateStandardFormat, LocDateStr)
|
||||
NOSTANDARDDATEFORMAT:
|
||||
If Err <> 0 Then
|
||||
bEventOnce = False
|
||||
Resume GETDATEFORMAT
|
||||
GETDATEFORMAT:
|
||||
On Local Error Goto NODATEFORMAT
|
||||
dblDate = oNumberFormatter.convertStringToNumber(lDateFormat, LocDateStr)
|
||||
End If
|
||||
lDate = Clng(dblDate)
|
||||
CurEvMonth = Month(lDate)
|
||||
CurEvDay = Day(lDate)
|
||||
If bEventOnce Then
|
||||
CurEvYear = Year(lDate)
|
||||
Else
|
||||
CurEvYear = SBYEARUNDEFINED
|
||||
End If
|
||||
GetDateUnits() = dblDate
|
||||
Exit Function
|
||||
GetDateUnits() =SBDATEUNDEFINED
|
||||
NODATEFORMAT:
|
||||
If Err <> 0 Then
|
||||
MsgBox("Error: Datum : ' " & LocDateStr & "' is not a valid Format", 16, sWizardTitle)
|
||||
Resume GETRETURNVALUE
|
||||
GETRETURNVALUE:
|
||||
GetDateUnits() = SBDATEUNDEFINED
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
|
@ -196,17 +224,6 @@ Dim NameStr as String
|
|||
End Function
|
||||
|
||||
|
||||
Function CalGetMonthOfEvent(ByVal ListIndex as Integer) as Integer
|
||||
Dim MonthStr as String
|
||||
MonthStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
|
||||
MonthStr = Mid(MonthStr, 5, 3)
|
||||
' In chinese Short Monthnames may be only 2 characters long.
|
||||
' In this case the third character is filled up with an empty space
|
||||
MonthStr = RTrim(MonthStr)
|
||||
CalGetMonthOfEvent = CalGetIntOfShortMonthName(MonthStr)
|
||||
End Function
|
||||
|
||||
|
||||
Function GetOwnYear()
|
||||
If DlgCalModel.chkEventOnce.State = 1 Then
|
||||
GetOwnYear() = DlgCalModel.txtOwnEventYear.Value
|
||||
|
@ -216,13 +233,17 @@ Function GetOwnYear()
|
|||
End Function
|
||||
|
||||
|
||||
Sub CheckInsertedDates()
|
||||
Sub CheckInsertedDates(Optional ControlEnvironment, Optional CurOwnMonth as Integer)
|
||||
Dim EvYear as Long
|
||||
Dim EvDay as Long
|
||||
Dim sEvMonth as String
|
||||
Dim bDoEnable as Boolean
|
||||
Dim bDoEnable as Boolean
|
||||
Dim ListboxName as String
|
||||
If Not IsMissing(ControlEnvironment) Then
|
||||
CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getSelectedItemPos()+1
|
||||
End If
|
||||
EvYear = GetOwnYear()
|
||||
bDoEnable = (EvYear <> 0) And (CurOwnMonth > 0)
|
||||
bDoEnable = (EvYear <> 0) And (CurOwnMonth <> 0)
|
||||
If bDoEnable Then
|
||||
DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
|
||||
bDoEnable = DlgCalModel.txtOwnEventDay.Value <> 0
|
||||
|
@ -239,8 +260,9 @@ End Sub
|
|||
|
||||
Sub GetOwnMonth()
|
||||
Dim EvYear as Integer
|
||||
Dim CurOwnMonth as Integer
|
||||
EvYear = GetOwnYear()
|
||||
CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1
|
||||
DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
|
||||
CheckInsertedDates()
|
||||
CheckInsertedDates(,CurOwnMonth)
|
||||
End Sub</script:module>
|
Loading…
Reference in a new issue