Autor |
|
|
|
130 Beiträge - Profi-Clicker
|
|
|
Einige Messages des DateTimePickers haben wir ja schon kennengelernt.
Zum einen die DTM_GETMCCOLOR und die DTM_GETMCCOLOR, mit der man die Farben des Kalenders auslesen und setzen kann. Wobei ich im vorangegangenen Beispiel noch einen Parameter vergessen hatte, und zwar kann man mit der 5 im wParam die Farbe der Tage des Vor- und Folgemonats, die ja auch im Monatskalender angezeigt werden, bestimmen und auslesen.
Desweiteren haben wir die MCM_GETCURSEL - Message kennengelernt, mit der man das gewählte Datum auslesen kann. Rein rechtlich gesehen gehört die MCM_GETCURSEL dem Monatskalender (MonthCalendarMessage), deshalb bekommt sie für den DateTimePicker den Namen DTM_GETSYSTEMTIME mit gleichem Wert: &H1001
DTM_SETSYSTEMTIME - Message &H1002
Mit dieser Message kann man den Kalender oder die Uhrzeit setzen.
Setze in [RET_SysTimeSend]: '[System.DLLAufruf user32.dll;SendMessageA;[PICK_Nummer];[DTM_SETSYSTEMTIME];[Valid_Flag];Struktur(SystemTime)._Daten=[Struktur(SystemTime)._Daten]?]'
Wie wir sehen, wird bei dieser Message ein [Valid_Flag] im wParam mitgegeben. Mit diesem Valid_Flag wird dem DateTimePicker mitgeteilt, ob die Daten übernommen werden sollen oder nicht. Ist dieser Wert 0, so übernimmt der DateTimePicker die Daten, ist der Wert 1, so werden die Daten nicht übernommen und bei angezeigter Ckeckbox wird der Haken entfernt.
Das Valid_Flag ist folgendermaßen definiert:
GDT_VALID = 0 Daten werden übernommen
GDT_NONE = 1 Daten werden nicht übernommen, Checkboxhaken entfernen
Die DTM_SETFORMAT - Message &H1005
Diese Message formatiert die Textdarstellung für Datum und Uhrzeit durch Formatbezeichner. Ebenfalls können benutzerdefinierte Texte eingegeben werden.
Das Format wird als Pointer auf den Formatstring an das DateTimePicker-Element gesendet. Also folgendermaßen:
Setze in [Return_Format]: '[System.DLLAufruf user32.dll;SendMessageA;[PICK_Nummer];[DTM_SETFORMAT];0;Formatstring=[Formatstring]]'
Die Formatbezeichner:
d: Stellt den Tag eines Monats als Zahl von 1 bis 31 dar. Einstellige Tage werden ohne führende Null formatiert.
dd: Stellt den Tag eines Monats als Zahl von 01 bis 31 dar. Einstellige Tage werden mit einer führenden Null formatiert.
ddd: Stellt den abgekürzten Namen des Wochentags dar. Z.B. Mo für Montag
dddd: Stellt den vollständigen Namen des Wochentags dar
h: Stellt die Stunde als Zahl von 1 bis 12 dar. Einstellige Stunden werden ohne führende Null formatiert
hh: Stellt die Stunde als Zahl von 01 bis 12 dar. Einstellige Stunden werden mit einer führenden Null formatiert.
H: Stellt die Stunde als Zahl von 0 bis 23 dar. Einstellige Stunden werden ohne führende Null formatiert.
HH: Stellt die Stunde als Zahl von 00 bis 23 dar. Einstellige Stunden werden mit einer führenden Null formatiert.
m: Stellt die Minute als Zahl von 0 bis 59 dar. Einstellige Minuten werden ohne führende Null formatiert.
mm: Stellt die Minute als Zahl von 00 bis 59 dar. Einstellige Minuten werden mit einer führenden Null formatiert.
M: Stellt den Monat als Zahl von 1 bis 12 dar. Einstellige Monate werden ohne führende Null formatiert.
MM: Stellt den Monat als Zahl von 01 bis 12 dar. Einstellige Monate werden mit einer führenden Null formatiert.
MMM: Stellt den abgekürzten Namen des Monats dar. Z.B. Apr für April
MMMM: Stellt den vollständigen Namen des Monats dar.
s: Stellt die Sekunden als Zahl von 0 bis 59 dar. Einstellige Sekunden werden ohne führende Null formatiert.
ss: Stellt die Sekunden als Zahl von 00 bis 59 dar. Einstellige Sekunden werden mit führender Null formatiert.
y: Stellt das Jahr als ein- oder zweistellige Zahl dar. Z.B. 8 für 2008, 10 für 2010
yy: Stellt das Jahr zweistellige Zahl dar. Z.B. 08 für 2008, 10 für 2010
yyyy: Stellt das Jahr vierstellige Zahl dar.
Aufbau des Formatstrings:
1. Die Formatierung wird in Anführungszeichen ("Formatstring") eingefasst.
2. Benutzerdefinierter Text wird in eingestrichene Anführungszeichen ('Text') eingefasst. Dadurch wird verhindert, dass Formatierungszeichen im Text aufgelöst werden.
3. Groß- Kleinschreibung muss beachtet werden
Beispiel: Die Formatierung "Datum: dd .MM. yyyy" würde z.B. Dau47: 12.04.2010 anzeigen, da das m im Text Datum die Minuten auflösen würde. Setzt man jetzt den Text Datum: in eingestrichene Anführungszeichen 'Datum:' passiert das nicht.
Wie ihr seht, machen die 64 Style-Kombinationen keinen Sinn, da man die Formatierung ändern kann. Besser ist es, die einzelnen Flags zu setzen, um den DateTimePicker nach eigenen Wünschen zu erstellen.
Weitere Messages
Es gibt noch ein paar andere Messages, die aber 1. nicht unbedingt erforderlich sind und 2. kompliziert aufzubauen sind. Der Vollständigkeitshalber will ich sie hier noch erwähnen:
DTM_GETRANGE = &H1003
DTM_SETRANGE = &H1004
Diese Nachrichten geben den minimalen und maximalen auswählbaren Datumswert an. Hierbei wird ein Pointer zu einem Array der SystemTime-Struktur übergeben.
DTM_GETMONTHCAL = &H1008
Diese Nachricht holt das Fenterhandle des Kalenders, wenn er aufgeklappt ist.
DTM_GETMCFONT = &H1009
DTM_SETMCFONT = &H100A
Mit diesen Nachrichten kann eine Schriftart für den Kalender angegeben oder ausgelesen werden. Die Schriftart wird mittels Pointer übergeben oder ausgelesen.
Das eigefügte Code erstellt eine Zip-Datei. In dieser Datei befindet sich das Testprogramm
DTMessages_oR.EXE ohne Laufzeitmodul
mit dem ich das DateTimePicker-Element getestet habe.
Das Programm veranschaulicht nochmal alle Messages und Styles. Ihr könnt Farben wählen (Farbe anklicken) und senden, Formatstrings senden, Styles über Style-Nummer oder Flags setzen, Datum Auslesen und Setzen.......
Viel Spaß wünscht
Findus
Erstellt mit cX2Web - cX4 WebExport V3 (12 Skriptzeilen, cX Premium 4.0.4.1)
Der Post wurde 2 mal editiert, zuletzt von Findus am 12.04.2010 - 14:50.
|
Beitrag vom 12.04.2010 - 14:42 |
|
|
|
135 Beiträge - Profi-Clicker
|
|
|
ich bekomme nach dem Speichern des ZIP Files immer den Fehler "Control "kalender" konnte nicht registriert werden was mache ich falsch?
|
Beitrag vom 18.08.2010 - 09:00 |
|