NicTheQuick hat geschrieben:Sag doch schnell noch die Lösung, dann hilfst du auch anderen.
So soll es sein
Code: Alles auswählen
If Event = #PB_Event_Gadget And EventGadget() = Canvas_Kalender ; ----------------- canvas_Kalender routinen ---------
Select EventType()
Case #PB_EventType_MouseMove
x = GetGadgetAttribute(Canvas_Kalender, #PB_Canvas_MouseX)
y = GetGadgetAttribute(Canvas_Kalender, #PB_Canvas_MouseY)
ForEach kalender()
If (x >= kalender()\x) And (x <= (kalender()\x+kalender()\width)) And
(y >= kalender()\y) And (y <= (kalender()\y+kalender()\height))
SetGadgetText(String_kalenderinfo,Str(kalender()\TagMon) + " " +Str(kalender()\Monat))
gewaehlt_tag = kalender()\TagMon
gewaehlt_mon = kalender()\Monat
EndIf
Next
Case #PB_EventType_LeftButtonDown
inhaltname$ = "unterricht_"+ gewaehlt_tag+"_"+gewaehlt_mon+"_"+kalender()\Jahr+".txt"
If OpenFile(0, inhaltname$) ; öffnet eine existierende Datei oder erstellt eine, wenn sie noch nicht existiert
CloseFile(0)
EndIf
RunProgram(inhaltname$)
EndSelect
Erklärung:
Da ich bezüglich Kalender nichts passendes gefunden habe mache ich den jetzt komplett neu.
Ziel ist einen Jahreskalender zu erstellen der sich aus der folgenden Textdatei selbst erstellt.
Code: Alles auswählen
Jahr;2013
Erster Wochentag;2
Tage pro Monat;31;28;31;30;31;30;31;31;30;31;30;31
Ferienwoche;1;1;5
Ferienwoche;25;3;13
Ferienwoche;22;7;44
Ferienwoche;21;10;13
Ferienwoche;23;12;9
Ferientag;9;5
Ferientag;20;5
Ferientag;21;5
Ferientag;3;10
Das ist schon alles fertig und wird auf einem Canvas angezeigt.
Ich kann zu jedem Tag verschiedene Inhalte definieren und auch verschiedene Farben festlegen.
Evtl. möchte ich noch mehrere Infos über das "Tagesfeld" anzeigen und nicht nur eine Farbe.
Die Infos zu jedem Tag werden in folgender Struktur gespeichert:
Code: Alles auswählen
Structure kalend
Jahr.i ; Jahr 2013
WoTag.i ; Wochentag 1 = Mo
TagGes.i ; Tag des Jahres 125
TagMon.i ; Tag im Monat 15
KW.i ; Kalenderwoche 20
Monat.i ; Monat 3 -> März
FarbeH.i ; Hintergr.farbe 65000
FarbeT.i ; Textfarbe 255
Bemerk.s ; freier Text "Praktikumswoche"
Link.s ; freier Link "http:\\www.superhomepage.de" für internet oder html auf Disk
markiert.i ; frei zum Beispiel für den aktuellen Tag
TagesArt.i ; z.B 1 = Schultag, 2 = Ferientag, 3 = Feriertag, was es sont soch so gibt..
x.i ; x-pos im Kalender_canvas
y.i ; y-pos im Kalender_canvas
width.i ; Breite im Kalender_canvas
height.i ; Länge im Kalender_canvas
EndStructure
Bei der Erzeugung des Kalenders auf dem Canvas trage ich die x,y,width und height für jeden Tag in die Struktur ein.
Jeder Tag hat also eine Struktur und eine bestimmte Fläche auf dem Canvas.
Vielleicht etwas weit ausgeholt aber vielleicht auch nicht
Der Code oben ermittelt automatisch die aktuelle Mausposition wenn sich der Cursor über das Canvas_Kalender bewegt.
In der Foreach-Schleife vergleiche ich dann ob die aktuelle Position in einer der Flächen eines Tages ist.
Wenn ja speichere ich den Tag im Feld gewaehlter_Tag und gewaehlter_Mon(at) ab.
Mache ich dann einen Linksklick auf den Tag, dann wird #PB_EventType_LeftButtonDown erzeugt und folgenden Programmzeilen ausgeführt.
Hier versuche ich mit "OpenFile" teste ich ob eine entsprechende "Tagesdatei" vorhanden ist wenn nicht wird eine erzeugt damit der folgende Programmaufruf nicht abbricht sondern die *.txt sofort geladen wird.
Da bin ich noch am testen weil mir ein .txt eigentlich nicht gut genug ist.
Ich hätte gerne auch die Möglichkeit Links im Text zu definieren.
Habe dazu schon Openoffice getestet aber irgendwie dauert mir da der Start zu lange.
Kennt jemand ein einfaches Textprogramm, Freeware welches auch Links im Text ermöglicht und das es evtl. auch für Linux und Mac gibt?
LG
Wolfgang
P.S. Falls so ein Kalender für euch interessant ist könnte ich ihn natürlich zur Verfügung stellen, wenn er komplett fertig ist!