home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri Kaikille K-CD 2002 #3 / K-CD_2002-03.iso / OpenOffice / f_0031 / OwnEvents.xba < prev   
Extensible Markup Language  |  2001-10-12  |  7KB  |  250 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
  3. <script:module xmlns:script="http://openoffice.org/2000/script" script:name="OwnEvents" script:language="StarBasic">Option Explicit
  4.  
  5. Dim CurOwnMonth as Integer
  6.  
  7. Sub Main
  8.     Call CalAutopilotTable()
  9. End Sub
  10.  
  11.  
  12.  
  13. Sub CalSaveOwnData()
  14. Dim FileName as String
  15. Dim FileChannel as Integer
  16. Dim i as Integer
  17.     If bCalOwnDataChanged Then
  18.         FileName = GetPathSettings("Config", False) & "/" & "DATE.DAT"
  19.         SaveDataToFile(FileName, DlgCalModel.lstOwnData.StringItemList())
  20.     End If
  21. End Sub
  22.  
  23.  
  24. Sub CalLoadOwnData()
  25. Dim FileName as String
  26. Dim LocList() as String
  27.     FileName = GetPathSettings("Config", False) & "/DATE.DAT"
  28.     If LoadDataFromFile(FileName, LocList()) Then
  29.         DlgCalModel.lstOwnData.StringItemList() = LocList()
  30.     End If
  31. End Sub
  32.  
  33.  
  34. Function SetFocusToControl(oTextControl as Object)
  35.     If oTextControl.Text = "" Then
  36.         Beep
  37.         oTextControl.DefaultButton = True
  38.         SetFocusToControl = True
  39.     Else
  40.         SetFocusToControl = False    
  41.     End If
  42. End Function
  43.  
  44.  
  45. Function CalCreateDateFromInput() as Date
  46. '    Generiert aus den Eingabedaten der Ereignisseite 
  47. '    ein Datum im Dateserial Format, 
  48. Dim newDate as Date
  49. Dim EvDay as Integer
  50. Dim EvYear as Integer
  51.     EvDay = DlgCalModel.txtOwnEventDay.Value
  52.     If DlgCalModel.chkEventOnce.State = 1 Then
  53.         EvYear = DlgCalModel.txtOwnEventYear.Value
  54.         newDate = DateSerial(EvYear, CurOwnMonth, EvDay)
  55.     Else
  56.         newDate = DateSerial(0, CurOwnMonth, EvDay)
  57.     End If
  58.     CalCreateDateFromInput = newDate
  59. End Function
  60.  
  61.  
  62. Function CalCreateDateStrOfInput() as String
  63. Dim DateStr as String
  64. Dim EvMonth as Integer
  65. Dim EvDay as Integer
  66.     EvDay = DlgCalModel.txtOwnEventDay.Value
  67.     If EvDay < 10 Then
  68.         DateStr = "0" & EvDay & ". "
  69.     Else
  70.         DateStr = Cstr(EvDay) & ". "
  71.     End If
  72.     DateStr = DateStr & DlgCalModel.lstOwnEventMonth.StringItemList(CurOwnMonth-1)
  73.     
  74.     If DlgCalModel.chkEventOnce.State = 1 And DlgCalModel.txtOwnEventYear.Value <> 0 Then
  75.         DateStr = DateStr & "  " + DlgCalModel.txtOwnEventYear.Value
  76.     Else
  77.         DateStr = DateStr + "      "
  78.     End If
  79.     DateStr = DateStr  + "  " + Trim(DlgCalModel.txtEvent.Text)
  80.     CalCreateDateStrOfInput = DateStr
  81. End Function
  82.  
  83.  
  84. Function CalGetDateWithoutYear&(ByVal i as Integer)
  85.     CalGetDateWithoutYear& = DateSerial(0, CalGetMonthOfEvent(i), CalGetDayOfEvent(i))
  86. End Function
  87.  
  88.  
  89. Sub CalcmdInsertData()
  90. Dim DateStr as String
  91. Dim LastIndex as Integer
  92. Dim bGetYear as Boolean
  93. Dim NewDate as Date
  94. Dim bInserted as Boolean
  95. Dim bDateDoubled as Boolean
  96. Dim EvYear as Integer
  97. Dim i as Integer
  98. Dim CurDate as Date
  99. Dim CurEvYear as Integer
  100. Dim CurEvMonth as Integer
  101. Dim CurEvDay as Integer
  102.  
  103.     bGetYear = DlgCalModel.chkEventOnce.State = 1
  104.     LastIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())            
  105.     If bGetYear Then
  106.         EvYear = DlgCalModel.txtOwnEventYear.Value
  107.     End If
  108.  
  109.     newDate = CalCreateDateFromInput()
  110.     DateStr = CalCreateDateStrOfInput()
  111.     If DateStr = "" Then Exit Sub
  112.  
  113.     '    Es ist noch garnichts vorhanden
  114.     If Ubound(DlgCalModel.lstOwnData.StringItemList()) = -1 Then
  115.         DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, 0 + 1)
  116.         bInserted = True
  117.     Else
  118.         '    gleiche jahre(auch keine Jahre sind gleiche jahre)->alt l├╢schen neu rein
  119.         i = 0
  120.         Do
  121.             CurEvYear = CalGetYearOfEvent(i)
  122.             CurEvMonth = CalGetMonthOfEvent(i)
  123.             CurEvDay = CalGetDayOfEvent(i)
  124.             If DateSerial(CurEvYear, CurEvMonth, CurEvDay) = NewDate Then
  125.                 ' Todo: Abchecken wie das ist mit 'Ereignis einmalig' oder nicht
  126.                 DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1)
  127.                 DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  128.                 bInserted = True
  129.             End If
  130.             i = i + 1
  131.         Loop Until bInserted Or i > LastIndex
  132.         
  133.         '    Es existiert ein Datum mit Jahreszahl. Es wird dasselbe Datum
  134.         '    ohne Angabe der Jahreszahl angegeben.
  135.         If Not bInserted And Not bGetYear Then
  136.             i = 0
  137.             Do
  138.                 bInserted = CalGetDateWithoutYear(i) = newDate
  139.                 i = i + 1
  140.                 If bInserted Then
  141.                     If CalGetYearOfEvent(i) <> 0 Then
  142.                         DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  143.                     End If
  144.                 End If    
  145.             Loop Until bInserted Or i > LastIndex
  146.         End If
  147.     
  148.         '    Das einzuf├╝gende Datum besitzt eine Jahreszahl, es gibt bereits
  149.         '    das Datum in der Liste, jedoch ohne Datum.
  150.         If Not bInserted And bGetYear Then
  151.             i = 0
  152.             Do
  153.                 bInserted = CalGetDateWithoutYear(i) = newDate
  154.                 i = i + 1
  155.                 If bInserted Then
  156.                     DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  157.                 End If
  158.             Loop Until bInserted Or i > LastIndex
  159.         End If
  160.     
  161.         '    Das Datum ist noch nicht vorhanden und wird richtig einsortiert
  162.         If Not bInserted And Not bDateDoubled Then
  163.             i = 0
  164.             Do 
  165.                 CurDate = CalGetDateWithoutYear(i)
  166.                 bInserted = newDate < CurDate
  167.                 If bInserted Then
  168.                     Exit Do
  169.                 End If
  170.                 i = i + 1
  171.             Loop Until bInserted Or i > LastIndex
  172.             DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  173.         End If
  174.     End If
  175.     
  176.     '    Flag zum Speichern der neuen Daten.
  177. '    If bInserted Then
  178.         bCalOwnDataChanged = True
  179. '    End If
  180.     
  181.     Call CalClearInputMask()
  182. End Sub
  183.  
  184.  
  185. Function CalGetYearOfEvent(ByVal ListIndex as Integer) as Integer
  186. Dim YearStr as String
  187.     YearStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  188.     CalGetYearOfEvent = Val(Mid(YearStr, 10, 4))
  189. End Function
  190.  
  191.  
  192. Function CalGetDayOfEvent(ByVal ListIndex as Integer) as Integer
  193. Dim DayStr as String
  194.     DayStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  195.     CalGetDayOfEvent = Val(Left(DayStr,2))
  196. End Function
  197.  
  198.  
  199. Function CalGetNameOfEvent(ByVal ListIndex as Integer) as String
  200. Dim NameStr as String
  201.     NameStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  202.     NameStr = Trim (Mid(NameStr, 16))
  203.     CalGetNameOfEvent = NameStr
  204. End Function
  205.  
  206.  
  207. Function CalGetMonthOfEvent(ByVal ListIndex as Integer) as Integer
  208. Dim MonthStr as String
  209.     MonthStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  210.     MonthStr = Mid(MonthStr, 5, 3)
  211.     CalGetMonthOfEvent = CalGetIntOfShortMonthName(MonthStr)
  212. End Function
  213.  
  214.  
  215. Function GetOwnYear()    
  216.     If DlgCalModel.chkEventOnce.State = 1 Then
  217.         GetOwnYear() = DlgCalModel.txtOwnEventYear.Value
  218.     Else
  219.         GetOwnYear() = Year(Now())
  220.     End If
  221. End Function
  222.  
  223.  
  224. Sub CheckInsertedDates()
  225. Dim EvYear as Long
  226. Dim EvDay as Long
  227. Dim sEvMonth as String
  228. Dim bDoEnable as Boolean    
  229.     EvYear = GetOwnYear()
  230.     bDoEnable = (EvYear <> 0) And (CurOwnMonth <> -1)
  231.     If bDoEnable Then
  232.         DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
  233.         bDoEnable = DlgCalModel.txtOwnEventDay.Value <> 0
  234.         If bDoEnable Then
  235.             bDoEnable = Ubound(DlgCalModel.lstOwnEventMonth.SelectedItems()) > -1
  236.             If bDoEnable Then
  237.                 bDoEnable = LTrim(DlgCalModel.txtEvent.Text) <> ""
  238.             End If
  239.         End If
  240.     End If
  241.     DlgCalModel.cmdInsert.Enabled = bDoEnable
  242. End Sub
  243.  
  244.  
  245. Sub GetOwnMonth
  246. Dim EvYear as Integer
  247.     EvYear = GetOwnYear()
  248.     CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1
  249.     DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
  250. End Sub</script:module>