Seite 1 von 1

DateGadget nach einlesen aus Sicherungsdatei unveränderbar

Verfasst: 16.10.2012 17:37
von Mike-a_de
Hallo allerseits,

bin neu hier (im Forum und auch in der PB-Welt) und bin gleich beim ersten Kodieren auf ein Problem gestoßen, bei dem ich nicht weiter weiß. Das Thema wurde schon in einem Forum behandelt, aber ich muss zu meiner Schande gestehen, dass die Antwort in keinster Weise für mich nachvollziehbar war. Ich habe sie auch nicht umsetzen können.

Es geht um folgendes: Im unten stehenden Code wird ein Fenster mit drei Buttons und einem DateGadget aufgemacht.

Ich kann das Datum innerhalb des Datum-Feldes bei der Ausführung des Codes verändern wie ich möchte. Auch nach dem Speichern lässt sich das Datum noch verändern.

Wenn ich jedoch das Datum aus der Sicherungsdatei „testdata.txt“ zurücklese, ist das Datum zwar da, lässt sich aber nun nicht mehr verändern. Ich kann das Datumsfenster aufmachen, ein beliebiges Datum anwählen, aber der Wert in diesem Felde ändert sich nicht.

Wie kann ich nach dem einlesen der Textdatei in diesem DateGadget noch das Datum ändern?

Vielen Dank vorab für die Antwort :)

Lieben Gruß

Mike

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_Main_1
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Date_Start_date
  #Text_Start_date
  #Button_Save_data
  #Button_Load_data
  #Button_Quit
  
EndEnumeration

;Procedure Open_Window_Main_1()
  If OpenWindow(#Window_Main_1, 355, 50, 1326, 927, "Project",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      If CreateGadgetList(WindowID(#Window_Main_1))

        DateGadget(#Date_Start_date, 785, 205, 185, 20, "%dd/%mm/%yyyy")
        GadgetToolTip(#Date_Start_date, "Insert the project start date here")
        ButtonGadget(#Button_Save_data, 385, 720, 125, 40, "Save Data")
        ButtonGadget(#Button_Load_data, 550, 720, 125, 40, "Load Data")
        ButtonGadget(#Button_Quit, 1150, 720, 125, 40, "Quit")
        
      EndIf
    EndIf

Procedure Data_save()

  FileName.s = "testdata.txt"
  File = CreateFile ( #PB_Any , FileName )
  If File
    
    WriteStringN (File , GetGadgetText(#Date_Start_date))
    
  Else
    Debug " Could not create the file : " + FileName
  EndIf
  
  CloseFile ( File )
  
EndProcedure

Procedure Data_load()

  ProgramDirectory.s = Space(#MAX_PATH)
  GetCurrentDirectory_(#MAX_PATH, ProgramDirectory)
  Load_file$ = OpenFileRequester("Bitte Datei zum Laden auswählen",ProgramDirectory + "\","Text-Dateien | *.txt",0)
  File = ReadFile ( #PB_Any , Load_file$ )

  If File
   
    SetGadgetText (#Date_Start_date, ReadString (File)) 


  Else
    Debug " Could not load the file : " + Load_file$
  EndIf
  
  CloseFile ( File )

EndProcedure

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  If EventGadget()= #Button_Save_data
    Data_save()
  EndIf
  
  If EventGadget()= #Button_Load_data
    Data_load()
  EndIf  
  
  If EventGadget()= #Button_Quit
    Event = #PB_Event_CloseWindow
  EndIf    

  
Until Event = #PB_Event_CloseWindow ; End of the event loop

Re: DateGadget nach einlesen aus Sicherungsdatei unveränderb

Verfasst: 16.10.2012 18:05
von ts-soft
Datum wird mit SetGadgetState gesetzt! Mit SetGadgetText wird die Maske gesetzt!

Hab Deinen Code noch in weiteren Details angepasst, weil Variablendeklaration halte ich für sehr wichtig,
GetCurrentDirectory-API gibts es als nativen Befehl und ist nicht unbedingt der Ort, den Du erwartest :wink:

Ein weiterer Fehler war im Event-Loop, erst die Abfrage ob #PB_Event_Gadget und dann erst EventGadget()

Code: Alles auswählen

EnableExplicit

;- Window Constants
;
Enumeration
  #Window_Main_1
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Date_Start_date
  #Text_Start_date
  #Button_Save_data
  #Button_Load_data
  #Button_Quit
  
EndEnumeration

;Procedure Open_Window_Main_1()
If OpenWindow(#Window_Main_1, 355, 50, 1326, 927, "Project",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  
  ;       If CreateGadgetList(WindowID(#Window_Main_1))
  
  DateGadget(#Date_Start_date, 785, 205, 185, 20, "%dd/%mm/%yyyy")
  GadgetToolTip(#Date_Start_date, "Insert the project start date here")
  ButtonGadget(#Button_Save_data, 385, 720, 125, 40, "Save Data")
  ButtonGadget(#Button_Load_data, 550, 720, 125, 40, "Load Data")
  ButtonGadget(#Button_Quit, 1150, 720, 125, 40, "Quit")
  
  ;       EndIf
EndIf

Procedure Data_save()
  
  Protected FileName.s = GetPathPart(ProgramFilename()) + "testdata.txt"
  Protected File = CreateFile ( #PB_Any , FileName )
  If File
    
    WriteStringN (File , GetGadgetText(#Date_Start_date))
    
  Else
    Debug " Could not create the file : " + FileName
  EndIf
  
  CloseFile ( File )
  
EndProcedure

Procedure Data_load()
  
  ;   ProgramDirectory.s = Space(#MAX_PATH)
  ;   GetCurrentDirectory_(#MAX_PATH, ProgramDirectory)
  Protected ProgramDirectory.s = GetPathPart(ProgramFilename())
  Protected Load_file$ = OpenFileRequester("Bitte Datei zum Laden auswählen",ProgramDirectory + "\","Text-Dateien | *.txt",0)
  Protected File = ReadFile ( #PB_Any , Load_file$ )
  
  If File
    
    SetGadgetState(#Date_Start_date, ParseDate("%dd/%mm/%yyyy", ReadString (File)))
    
    
  Else
    Debug " Could not load the file : " + Load_file$
  EndIf
  
  CloseFile ( File )
  
EndProcedure

Define Event
Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  If Event = #PB_Event_Gadget
    If EventGadget()= #Button_Save_data
      Data_save()
    EndIf
    
    If EventGadget()= #Button_Load_data
      Data_load()
    EndIf 
    
    If EventGadget()= #Button_Quit
      Event = #PB_Event_CloseWindow
    EndIf
  EndIf  
  
  
Until Event = #PB_Event_CloseWindow ; End of the event loop 
Gruß
Thomas

Re: DateGadget nach einlesen aus Sicherungsdatei unveränderb

Verfasst: 16.10.2012 20:37
von Mike-a_de
Hallo Thomas,

vielen dank für die extrem schnelle Beantwortung. Ich schätze, dass ich hier des Öfteren in der fragenden Position auftauchen werde :D Ich habe mich entschlossen Anwendungen mit PB zu erstellen und bin ein Befürworter des Learning by Doing. Das soll nicht heißen, dass ich bei jedem Problem hier aufschlagen werde. So leicht möchte ich es mir gar nicht machen, aber ab und an wird hier sicherlich eine Fragestellung von mir auftauchen.

Nochmals vielen Dank für die Hilfestellung und ich deklariere jetzt auch schön brav meine Variablen bevor ich sie einsetze :)

Lieben Gruß

Mike

Re: DateGadget nach einlesen aus Sicherungsdatei unveränderb

Verfasst: 17.10.2012 06:41
von WPö
Moin, Micke!

Dann auch von mir ein Willkommen im Forum!

Gruß - WPö