home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / kim21.zip / TERMIN.KIM < prev    next >
Text File  |  1994-08-31  |  9KB  |  324 lines

  1.  
  2.  
  3. rem Datum               :    März 1995
  4. rem Version             :    1.0
  5. rem Programm            :    Terminverwaltung mit DBASE-Datenbank
  6. rem Datei               :    TERMIN.KIM
  7. rem Programmierer       :    EDV-Kohlenbach
  8.   
  9.   
  10.         rem Zunächst die Definition einiger Variablen und das Laden der Icondatei
  11.         deffloat a,_i
  12.  
  13.         rem Definition der Felder 1-4 für die Datenbank
  14.         dim _felder,1,3
  15.         DIMMEMO _felder4, 10000
  16.  
  17.     rem Hilfetaste definieren
  18.         SET_KEYMAP "F12",10001,1
  19.  
  20.         call db_oeffnen()
  21.         call fenster()
  22.         win_paint "window"
  23.  
  24.         while _i<>1000
  25.            win_ev _i
  26.         wend
  27.         iclose 1
  28.         end
  29.  
  30.  
  31. rem ---------------------------------------------------------------------
  32. rem U N T E R P R O G R A M M E
  33. rem ---------------------------------------------------------------------
  34.  
  35. rem Modul zur Definition und Erstellung einer Datenbank mit Recordstruktur
  36.         modul db_oeffnen()
  37.         
  38.         DEFFLOAT a
  39.         DEFSTRING expr
  40.  
  41.         rem Nun eine Abfrage, ob die Datenbank schon existiert; falls nicht: Neuerstellung
  42.         exist "termin.dbf",a
  43.         IF a<>1 THEN
  44.                 dim feld,1,10
  45.                 dim index,1,10
  46.                 feld1=" TIME   ,  C  ,   10  ,   0"
  47.                 feld2=" DATUM  ,  D  ,   10  ,   0"
  48.                 feld3=" NAME   ,  C  ,   40  ,   0"
  49.                 feld4=" MEMO   ,  M  ,   10  ,   0"
  50.                 feld5=""
  51.  
  52.                 rem In Variable <feld5> kein Leerzeichen !!!
  53.  
  54.                 index1=' NAME_TAG   ,  NAME  , DEL()<>"*",   0,  0'
  55.                 index2=' DATUM_TAG  ,  DATUM , DEL()<>"*",   0,  0'
  56.                 index3=""
  57.  
  58.                 rem Eventuell bereits existierende Dateien werden gelöscht
  59.                 kill "termin.dbf"
  60.                 kill "termin.cdx"
  61.                 kill "termin.fpt"
  62.                 kill "termin.dpt" 
  63.                 
  64.                 rem Die Datenbank wird neu erstellt
  65.                 icreate "termin",feld,index
  66.  
  67.                 rem Mindestens ein Leersatz
  68.                 iopen 1,"termin"
  69.                 iopen_index 1,"termin"
  70.                 iadd 1,_felder
  71.                 iclose 1
  72.  
  73.         ENDIF
  74.  
  75.         rem Die Datenbank und die Indexdatei werden geöffnet
  76.         IOPEN  1,"termin"
  77.         IOPEN_INDEX 1,"termin"
  78.  
  79.         rem Felder können über Namen aus der DBASE-DB angesprochen werden
  80.         dbfields 1,_felder
  81.         
  82.         rem Der aktuelle Index wird ausgewählt und der erste Datensatz geladen
  83.         iset 1,"DATUM_TAG",expr
  84.         istart 1,_felder
  85.  
  86.         ENDMOD
  87.  
  88. rem Definition des Hauptfensters
  89.         MODUL fenster()
  90.  
  91.                 def_window_st "window",1,1,62,15,"Testfenster"
  92.  
  93.                 def_toolbar "toolbar", 0, 0, 60, 5;"region off"
  94.                 def_button "b0", 0, 0, 10, " ", "&Speichern"
  95.                 def_button "b1", 0, 0, 10, " ", "&Löschen"
  96.                 def_button "b2", 0, 0, 10, " ", ">>>"
  97.                 def_button "b3", 0, 0, 10, " ", "<<<"
  98.                 def_button "b4", 0, 0, 10, " ", "&Beenden"
  99.                 def_button "b5", 0, 0, 10, " ", "&Neu"
  100.                 def_button "b6", 0, 0, 10, " ", "S&uchen"
  101.                 
  102.                 add_item "toolbar",..
  103.                 "b0",..
  104.                 "b1",..
  105.                 "b2",..
  106.                 "b3",..
  107.                 "b4",..
  108.         "b5",..
  109.         "b6"
  110.                
  111.                 add_item  "window", "toolbar"
  112.  
  113.                 DEF_PROMPT "aus1", 1, 0, "Zeit  "
  114.                 DEF_PROMPT "aus2", 1, 1, "Datum  "
  115.                 DEF_PROMPT "aus3", 1, 2, "Name  "
  116.                 DEF_PROMPT "aus4", 1, 3, "Kommentar  "
  117.                 DEF_INPUT_TIME "inp1", 10, 0, 10, "",""; "border"
  118.                 DEF_INPUT_DATE "inp2",10,1,14,"  .  .  ",""  ;"border"
  119.                 DEF_STRING "inp3", 10, 2, 40, ""; "border"
  120.                 DEF_TEXT   "inp4", 1, 4, 49, 5, 10000, ""; "border", "wrap off"
  121.  
  122.                 DEF_SCROLLBAR "scroll1", 0, 0, 0, 0, 0
  123.                 DEF_SCROLLBAR "scroll2", 1, 0, 0, 0, 0
  124.  
  125.                 ADD_ITEM "inp4",..
  126.                 "scroll1",..
  127.                 "scroll2"
  128.  
  129.                 ADD_ITEM_ARRAY "window", "aus",1,4
  130.                 ADD_ITEM_ARRAY "window", "inp",1,4
  131.  
  132.         rem Statuszeile am unteren Fensterrand
  133.  
  134.         DEF_STATUSBAR "status",1
  135.         DEF_PROMPT "statustext",1,0,"F12=Hilfe  ";"color on"
  136.         DEF_PALETTE 1,0,7
  137.         COLOR_ITEM "statustext",1
  138.         ADD_ITEM "status","statustext"
  139.         ADD_ITEM "window","status"
  140.  
  141.  
  142.         ENDMOD
  143.  
  144. rem Daten aus den Eingabefeldern werden gespeichert
  145.         modul b0_select()
  146.           call daten_schreiben()
  147.           imodrec 1,_felder
  148.         endmod
  149.  
  150. rem Aktueller Datensatz wird gelöscht
  151.         modul b1_select()
  152.           idel 1
  153.           igetrec 1,_felder        
  154.           call daten_ausgeben()
  155.         endmod
  156.  
  157.  
  158. rem Der nächste Datensatz wird herausgesucht und angezeigt
  159.         modul b2_select()
  160.           deffloat a
  161.           inext 1,a,_felder
  162.           call daten_ausgeben()
  163.         endmod
  164.  
  165. rem Der vorhergehende Datensatz wird herausgesucht und angezeigt
  166.         modul b3_select()
  167.           deffloat a
  168.           iprev 1,a,_felder
  169.           call daten_ausgeben()
  170.         endmod
  171.  
  172. rem Programm beenden
  173.         MODUL b4_select()
  174.           DEFFLOAT flag
  175.           MSGBOX "Programm beenden ?", 1, flag, " "
  176.           IF flag=1 THEN
  177.             _i=1000
  178.           ENDIF
  179.         ENDMOD
  180.  
  181. rem Die Eingabefelder werden für eine Neueingabe geleert
  182.        modul b5_select()
  183.           clear _felder,1,4
  184.           iadd 1,_felder
  185.           call daten_ausgeben()
  186.       setfocus "inp1"
  187.         endmod
  188.  
  189. rem Die Suchfunktion wird aufgerufen
  190.         modul b6_select()
  191.           call fenster_suchen()
  192.           igetrec 1,_felder
  193.           call daten_ausgeben()
  194.         endmod
  195.  
  196. rem Ausgabe von Daten auf dem Bildschirm
  197.         modul daten_ausgeben()
  198.           set_item_array "inp",_felder,1,4
  199.         endmod
  200.   
  201. rem Einlesen von Daten aus den Eingabefeldern in die Recordstruktur
  202.         modul daten_schreiben()
  203.           get_item_array "inp",_felder,1,4
  204.         endmod
  205.  
  206.  
  207. rem Suchfunktion
  208.         MODUL fenster_suchen()
  209.  
  210.         defstring obj
  211.         deffloat ii,taste
  212.  
  213.         call erstelle_suchfenster()
  214.         win_paint "suche"
  215.         while ii<>1000
  216.           win_ev ii
  217.           get_item_pos obj,taste
  218.           if taste=13 then
  219.             if obj="bx1" then
  220.                 call such_auswerten()
  221.                 ii=1000
  222.             endif
  223.             if obj="bx2" then
  224.                 ii=1000
  225.             endif
  226.           endif
  227.         wend
  228.         event_on_item "suche","end"
  229.  
  230.         endmod
  231.  
  232.  
  233. rem Suchen von Datensätzen
  234.         MODUL such_auswerten()
  235.  
  236.         DEFSTRING expr
  237.         deffloat ok
  238.         DIM dat,1,3
  239.    
  240.         get_item "kr2",_felder.name
  241.         compress _felder.name
  242.         if _felder.name<>"" then
  243.           iset 1, "Name_Tag", expr
  244.           iread 1, ok, _felder.name, soft
  245.           exitmod
  246.         endif
  247.         get_item "kr1", _felder.datum
  248.         if _felder.datum<>"" then
  249.           iset 1, "Datum_Tag",expr
  250.           select _felder.datum,46,dat,1,3
  251.           _felder.datum=dat3+dat2+dat1
  252.           iread 1, ok, _felder.datum, _felder
  253.         endif
  254.         endmod
  255.  
  256.       
  257. rem Definition des Suchfensters
  258.         MODUL erstelle_suchfenster()
  259.         
  260.         def_window_st "suche", 3, 2, 50, 12, "Suchen";"modal","move off"
  261.         
  262.         rem Zusätzliche Objekte werden definiert und dem Fenster angefügt
  263.         def_prompt "such1",10,0,"Geben Sie einen Suchbegriff"
  264.         def_prompt "such2",10,1,"im entsprechenden Feld an"
  265.         def_prompt "such3",1,3,"Name  "
  266.         def_prompt "such4",1,4,"Datum  "
  267.         def_input_date "kr1",10,4,14,"  .  .  ",""  ;"border"
  268.         def_string "kr2",10,3,20,"";"border"
  269.         def_button "bx1",3,8,20,"","&Suchen beginnen"
  270.         def_button "bx2",25,8,20,"","&Abbruch"
  271.  
  272.  
  273.         add_item "suche",..
  274.         "such1",..
  275.         "such2",..
  276.         "such3",..
  277.         "such4",..
  278.         "kr1",..
  279.         "kr2",..
  280.         "bx1",..
  281.         "bx2"
  282.  
  283. endmod
  284.  
  285. rem Prüfen ob Datumkorrekt eingegeben
  286.     modul inp2_validate()
  287.       deffloat flag
  288.       msgbox "Datum muß in der Form TT.MM.YYYY eingegeben werden",0,flag,""
  289.           setfocus "inp2"
  290.     endmod
  291.        modul inp2_lostfocus()
  292.           defstring date
  293.       deffloat flag
  294.       get_item "inp2",date
  295.           if date=""
  296.          msgbox "Datum muß in der Form TT.MM.YYYY eingegeben werden",0,flag,""
  297.            setfocus "inp2"
  298.           endif
  299.     endmod
  300.  
  301. rem Auf Taste F1 reagieren
  302.  
  303.     modul system_keypress()
  304.         
  305.       if system.keypress=10001 then
  306.          call hilfe(system.object)
  307.           endif 
  308.  
  309.     endmod
  310.  
  311. rem Hilfefenster
  312.     modul hilfe(char o)
  313.        deffloat flag
  314.       if o="inp1" then
  315.         msgbox "Hilfe für Feld INP1",0,flag,""
  316.           else
  317.             msgbox "Hier könnte eine allgemeine Hilfe stehen !",0,flag,""
  318.           endif
  319.     endmod
  320.  
  321. rem ************** Ende des Programms *******************
  322.  
  323.  
  324.