Datum lang/kurz ? [erledigt]
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Datum lang/kurz ? [erledigt]
hi,
ich habe bei mir immer noch das "kurze" Datum Format DD.MM.JJ
damit würde aber ein für "langes" Datum DD.MM.JJJJ ausgelegte LCD Uhr mit Datum evtl. "falsch" dargestellt. Frage : kann man "feststellen" welches System Datum Format eingestellt ist und kann man innerhalb von Xbase++ ändern ?
SET DATE FORMAT setzt wohl auf dem System Datum Format auf und kann aus DD.MM.JJ nicht DD.MM.JJJJ machen ?
ich habe bei mir immer noch das "kurze" Datum Format DD.MM.JJ
damit würde aber ein für "langes" Datum DD.MM.JJJJ ausgelegte LCD Uhr mit Datum evtl. "falsch" dargestellt. Frage : kann man "feststellen" welches System Datum Format eingestellt ist und kann man innerhalb von Xbase++ ändern ?
SET DATE FORMAT setzt wohl auf dem System Datum Format auf und kann aus DD.MM.JJ nicht DD.MM.JJJJ machen ?
Zuletzt geändert von AUGE_OHR am Mi, 05. Jan 2011 10:08, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Datum lang/kurz ?
Hallo Jimmy,
es ist doch immer das lange Datum aktiv, es gibt eigentlich kein anderes.
Das kurze Datun wird doch nur angezeigt wenn du SET CENTURY OFF setzt
Ob dies gesetzt ist, kannst Du doch abfragen.
Oder habe ich die Frage jetzt falsch verstanden ?
es ist doch immer das lange Datum aktiv, es gibt eigentlich kein anderes.
Das kurze Datun wird doch nur angezeigt wenn du SET CENTURY OFF setzt
Ob dies gesetzt ist, kannst Du doch abfragen.
Oder habe ich die Frage jetzt falsch verstanden ?
Gruß
Klaus
Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Datum lang/kurz ?
ich habe extra, wegen paar alter Cl*pper Util´s das System Datum auf JJ/MM/DD gesetzt.Koverhage hat geschrieben:es ist doch immer das lange Datum aktiv, es gibt eigentlich kein anderes.
Das kurze Datun wird doch nur angezeigt wenn du SET CENTURY OFF setzt
Ob dies gesetzt ist, kannst Du doch abfragen.
Oder habe ich die Frage jetzt falsch verstanden ?
du hast mich aber mich mit SET CENTURY ON auf die richtige Fährte gebracht, danke
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Datum lang/kurz ? [erledigt]
SET CENT wirkt sich eigentlich nur auf die direkte Ausgabe (CRT-Modus) und die Umwandlung z.B. per DtoC und DtoS aus. Year(Date()) liefert immer eine vierstellige Zahl, wenn die Jahreszahl vierstellig ist. Um also unabhängig von SET CENT-Einstellungen zu arbeiten, wäre empfehlenswert, für die Darstellung jeweils Day(), Month() und Year() auszuwerten.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Datum lang/kurz ? [erledigt]
hi,
ich bin darauf gekommen weil Wolfgang mir eine Demo mit Datum geschickt hat.
erst zeigte es "Unsinn" an und ich dachte mir das kann nicht sein ... aber dann viel mir "mein" DD.MM.JJ ein.
klar wenn ich es auf "default" stelle DD.MM.JJJJ läuft das Demo, aber ich wollte es auch trotz DD.MM.JJ haben.
das scheint nun mit SET CENTURY ON zu gehen trotz meiner DD.MM.JJ Einstellung =D>
ich bin darauf gekommen weil Wolfgang mir eine Demo mit Datum geschickt hat.
erst zeigte es "Unsinn" an und ich dachte mir das kann nicht sein ... aber dann viel mir "mein" DD.MM.JJ ein.
klar wenn ich es auf "default" stelle DD.MM.JJJJ läuft das Demo, aber ich wollte es auch trotz DD.MM.JJ haben.
das scheint nun mit SET CENTURY ON zu gehen trotz meiner DD.MM.JJ Einstellung =D>
Code: Alles auswählen
#include "XBP.CH"
#include "APPEVENT.CH"
#include "GRA.CH"
#include "DLL.CH"
#include "COMMON.CH"
STATIC aCache:= {"","","","","","","","","","","","","","","","","","",""}
STATIC breite:=19*19
STATIC hoehe:=29
PROCEDURE APPSYS
RETURN
PROCEDURE MAIN()
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oDlg
LOCAL aPos
LOCAL oBMP,oLogo,aRect
LOCAL aSize := {247,29}
LOCAL nTimeout := 0
LOCAL lAllExit := .F.
LOCAL aDigit := {}
LOCAL nAnzahl := 13
LOCAL aUhr := {}
SET CENTURY ON // dies ist die einzige Erweiterung / Änderrung
Set date german
oBMP := XbpBitmap():new():create( )
oBMP:Load(NIL,101)
IF oBMP:xSize > 0
aSize[1] := oBMP:xSize
ENDIF
IF oBMP:ySize > 0
aSize[2] := oBMP:ySize
ENDIF
aPos := CenterPos( aSize, AppDesktop():currentSize() )
oDlg := XbpDialog():new( AppDesktop(),, aPos)
oDlg:icon = 1
oDlg:Tasklist := .T.
oDlg:titleBar := .F.
oDlg:clientSize := aSize
oDlg:border := XBPDLG_NO_BORDER
oDlg:create()
oDlg:hide()
aSize := oDlg:drawingArea:currentSize()
oLogo := XbpStatic():new( oDlg:drawingArea,, {0,0}, aSize )
oLogo:type := XBPSTATIC_TYPE_BITMAP
oLogo:caption := oBMP
oLogo:autoSize := .F.
oLogo:clipChildren := .T.
oLogo:create()
oDlg:Show()
setAppWindow(oDlg)
oLogo:Show()
setappfocus(oLogo)
aRect := {0, 0, aSize[1], aSize[2]}
aDigit := SPLITINTO( oLogo, aRect , nAnzahl )
SLEEP(100)
oLogo:hide()
aUhr := MakeBig(oDlg,aDigit)
SetTimerEvent(100, {|| Anzeige(oDlg,aUhr,aDigit) } )
nEvent := xbe_None
DO WHILE .NOT. lAllExit
nEvent := AppEvent ( @mp1, @mp2, @oXbp, nTimeout )
DO CASE
CASE nEvent == xbe_None // nTimeout eingetreten
EXIT
CASE nEvent == xbeP_Keyboard .and. mp1 == xbeK_SPACE
SetTimerEvent(0)
Readnew( @aDigit,aUhr,oBMP,oLogo,aRect,nAnzahl )
SetTimerEvent(100, {|| Anzeige(oDlg,aUhr,aDigit) } )
CASE nEvent == xbeP_Keyboard .and. mp1 == xbeK_ESC
EXIT
ENDCASE
oXbp:HandleEvent ( nEvent, mp1, mp2 )
ENDDO
oDlg:destroy()
RETURN
STATIC FUNCTION CENTERPOS( aSize, aRefSize )
RETURN { Int( (aRefSize[1] - aSize[1]) / 2 ) ;
, Int( (aRefSize[2] - aSize[2]) / 2 ) }
FUNCTION BMP2BMP(oBMP,aXbpSize)
LOCAL oHuge,oTiny,oPS, oRet
IF aXbpSize[2] > 0
oHuge := oBMP
//Create a small bitmap to fit in our XbpStatic
oTiny := XbpBitmap():New():Create()
oTiny:Make(aXbpSize[1], aXbpSize[2])
oPS := XbpPresSpace():new()
oTiny:presSpace(oPS)
//Copie and resize the huge bitmap to the small bitmap
oHuge:Draw(oPS, { 0, 0, aXbpSize[1], aXbpSize[2]}, , , GRA_BLT_BBO_IGNORE)
oRet := oTiny
ELSE
oRet := oBMP
ENDIF
RETURN oRet
FUNCTION SPLITINTO( oSourceArea, aRect ,InOut)
/********************************************************************
"split" Bitmap into "parts"
******************************************************************* */
LOCAL oTargetPS
LOCAL oBitmap
LOCAL oPS := NIL
LOCAL nSizeX := aRect[ 3 ] - aRect[ 1 ]
LOCAL nSizeY := aRect[ 4 ] - aRect[ 2 ]
LOCAL i
LOCAL iMax
LOCAL nStep := INT(nSizeX/InOut)
LOCAL aRet := {}
DEFAULT InOut TO 0
iMax := InOut+1
FOR i = 1 TO iMax
oTargetPS := XbpPresSpace():new():create()
oBitmap := XbpBitmap():new():create()
oPS := oSourceArea:lockPS()
oBitmap:presSpace( oTargetPS )
IF i > 1
oBitmap:make( breite/19, hoehe )
GraBitBlt( oTargetPS, oPS, { 0, 0, breite/19, hoehe },;
{ nStep*(i-2), 0, nStep*(i-1), nSizeY },;
GRA_BLT_ROP_SRCPAINT,GRA_BLT_BBO_IGNORE )
ENDIF
oSourceArea:unLockPS( oPS )
Sleep( 0 )
oTargetPS:destroy()
oTargetPS := NIL
AADD(aRet,oBitmap)
NEXT
RETURN aRet
FUNCTION MakeBig(oDlg,aDigit)
LOCAL aSize := {breite,hoehe}
LOCAL aPos := CenterPos( aSize, AppDesktop():currentSize() )
LOCAL i
LOCAL oXbp
LOCAL aUhr := {}
LOCAL oBMP
oDlg:hide()
oDlg:setPosAndSize(aPos,aSize)
FOR i := 1 TO 19
oBMP := aDigit[3]
oXbp := XbpStatic():new( oDlg:drawingArea,, {(i-1)*breite/19,0}, {aSize[1]/19,aSize[2]} )
oXbp:type := XBPSTATIC_TYPE_BITMAP
oXbp:caption := oBMP
oXbp:autoSize := .F.
oXbp:clipChildren := .T.
oXbp:create()
AADD(aUhr,oXbp)
NEXT
oDlg:show()
oDlg:drawingArea:invalidateRect()
setAppFocus(oDlg)
RETURN aUhr
PROCEDURE Anzeige(oDlg,aUhr,aDigit)
LOCAL cTime := dtoc(date())+" "+TIME()
LOCAL i
FOR i := 1 TO 19
IF i == 3 .OR. i == 6 // "." Zeichen
IF SUBSTR(cTime,i,1) == aCache[i]
ELSE
aCache[i] := SUBSTR(cTime,i,1)
aUhr[i]:setcaption(aDigit[2])
ENDIF
ELSEIF i == 14 .OR. i == 17 // ":" Zeichen
IF SUBSTR(cTime,i,1) == aCache[i]
ELSE
aCache[i] := SUBSTR(cTime,i,1)
aUhr[i]:setcaption(aDigit[14])
ENDIF
ELSEIF i == 11 // " " Zeichen
IF SUBSTR(cTime,i,1) == aCache[i]
ELSE
aCache[i] := SUBSTR(cTime,i,1)
aUhr[i]:setcaption(aDigit[3])
ENDIF
ELSE
IF SUBSTR(cTime,i,1) == aCache[i]
ELSE
aCache[i] := SUBSTR(cTime,i,1)
IF( aCache[i] == "0" , aUhr[i]:setcaption(aDigit[ 4]), NIL )
IF( aCache[i] == "1" , aUhr[i]:setcaption(aDigit[ 5]), NIL )
IF( aCache[i] == "2" , aUhr[i]:setcaption(aDigit[ 6]), NIL )
IF( aCache[i] == "3" , aUhr[i]:setcaption(aDigit[ 7]), NIL )
IF( aCache[i] == "4" , aUhr[i]:setcaption(aDigit[ 8]), NIL )
IF( aCache[i] == "5" , aUhr[i]:setcaption(aDigit[ 9]), NIL )
IF( aCache[i] == "6" , aUhr[i]:setcaption(aDigit[10]), NIL )
IF( aCache[i] == "7" , aUhr[i]:setcaption(aDigit[11]), NIL )
IF( aCache[i] == "8" , aUhr[i]:setcaption(aDigit[12]), NIL )
IF( aCache[i] == "9" , aUhr[i]:setcaption(aDigit[13]), NIL )
ENDIF
ENDIF
NEXT
RETURN
PROCEDURE Readnew( aDigit,aUhr,oBMP,oLogo,aRect,nAnzahl )
LOCAL i
STATIC nNo := 1
nNo++
IF nNo > 3
nNo := 1
ENDIF
AEval( aUhr, {|o| o:hide() } )
oLogo:show()
// als Bitmap Resoure im *.ARC File anlegen
// !!! auch in MAIN anpassen !!!
DO CASE
CASE nNo = 1 ; oBMP:Load(NIL,101)
CASE nNo = 2 ; oBMP:Load(NIL,102)
CASE nNo = 3 ; oBMP:Load(NIL,103)
OTHERWISE
oBMP:Load(NIL,101)
ENDCASE
oLogo:setCaption(oBMP)
aDigit := {}
aDigit := SPLITINTO( oLogo, aRect , nAnzahl )
oLogo:hide()
// hier muss ich den Cache "reset"en
aCache:= {"","","","","","","","","","","","","","","","","","",""}
AEval( aUhr, {|o| o:show(), o:invalidateRect() } )
RETURN
*
* eof
*
gruss by OHR
Jimmy
Jimmy
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Datum lang/kurz ? [erledigt]
Wobei die Version mit Datum nicht für die Anzeige von Datumwerten mit "/" als Trenner geeignet ist.
Außerdem gehören zu der Anzeige Datum und Uhr noch die geänderten Grafiken
Außerdem gehören zu der Anzeige Datum und Uhr noch die geänderten Grafiken
Viele Grüße
Wolfgang
Wolfgang