关于设置Windows时间格式的问题,所有家当奉上(211分)

  • 主题发起人 主题发起人 gaoshoucaiguai
  • 开始时间 开始时间
G

gaoshoucaiguai

Unregistered / Unconfirmed
GUEST, unregistred user!
问题描述:<br>&nbsp; &nbsp; 我想在我的程序运行的时候把Windows的日期、时间格式、分割符等设置成我想要的格式,当我退出自己的程序时又要恢复到原来的设置。请问高手,我该如何处理。因为以前从来没有接触过这方面的问题,现在完全不知道从何入手,望各位大虾不吝赐教。
 
在线等待
 
reg1:=tregistry.Create;<br>&nbsp;reg1.RootKey:=HKEY_CURRENT_USER;<br>&nbsp;reg1.OpenKey('Control Panel/International',true);<br>&nbsp;reg1.writestring('sShortDate','yyyy-MM-dd');<br>&nbsp;reg1.WriteString('sTimeFormat','HH:mm:ss');<br>&nbsp;reg1.CloseKey;<br>&nbsp;reg1.Free;<br>win2000或winnt是这样,如果是WIN9X的话,则用下面的来试试看<br>var <br>str: string; <br>begin <br>str :='yyyy-mm-dd'; &nbsp;<br>if SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE , PChar(str)) then <br>begin <br>showmessage('OK!'); <br>end; <br>end; <br>
 
其实没必要去修改系统的设置的,你可以自己判断系统的时间格式在程序中分别处理啊<br>在 SysUtils 中定义了以下 全局变量,根据它们来处理<br>&nbsp; CurrencyString: string;<br>&nbsp; CurrencyFormat: Byte;<br>&nbsp; NegCurrFormat: Byte;<br>&nbsp; ThousandSeparator: Char;<br>&nbsp; DecimalSeparator: Char;<br>&nbsp; CurrencyDecimals: Byte;<br>&nbsp; DateSeparator: Char;<br>&nbsp; ShortDateFormat: string;<br>&nbsp; LongDateFormat: string;<br>&nbsp; TimeSeparator: Char;<br>&nbsp; TimeAMString: string;<br>&nbsp; TimePMString: string;<br>&nbsp; ShortTimeFormat: string;<br>&nbsp; LongTimeFormat: string;<br>&nbsp; ShortMonthNames: array[1..12] of string;<br>&nbsp; LongMonthNames: array[1..12] of string;<br>&nbsp; ShortDayNames: array[1..7] of string;<br>&nbsp; LongDayNames: array[1..7] of string;<br>&nbsp; SysLocale: TSysLocale;<br>&nbsp; TwoDigitYearCenturyWindow: Word = 50;<br>&nbsp; ListSeparator: Char;<br>
 
这里先谢过先,我先试试。
 
我也觉得修改系统的设置做法不合适,只是想不到更好的方法。<br>假如我想不更改系统的设置,而是在程序运行的时候根据我自己的设置格式来控制<br>诸如TDateTimePicker等控件时间显示的格式。不知道DELPHI在程序运行过程中,日期、时间显示的格式是直接依据Windows来设置的呢,还是根据SysUtils 中的这些全局变量来设置的,这些全局变量能在程序运行过程中手工赋值吗。<br>pihome能给一个详细的说明吗,谢拉
 
直接依据Windows来设置的,SysUtils 中的这些全局变量是获取Windows中的设置的<br>而像TDateTimePicker控件时间显示的格式是可以自己设置的,如<br>DateTimePicker.Format:='yyyy年MM月dd日';
 
那我要是想让程序中诸如TDateTimePicker之类所有的时间控件都采用自己设置的格式,是否只能DateTimePicker.Format:='yyyy年MM月dd日'; 这样的方式赋值呢,还是可以通过比如给windows发送某个消息或其他方式解决。等待中……
 
&nbsp;DateSeparator:='-'<br>&nbsp; ShortDateFormat:='yyyy-mm-dd'<br>好像只能在98下用
 
发送消息也可以,不过也得知道它的句柄一个一个发送:)<br>SendMessage(DateTimePicker1.Handle,$1005,0,Integer(PChar('yyyy年MM月dd日')));<br>还是 DateTimePicker.Format:='yyyy年MM月dd日' 这样赋值算了<br>如果你想少写一些代码,用下面的方法<br>for i:=0 to ControlCount-1 do<br>&nbsp; if Controls is TDateTimePicker then<br>&nbsp; &nbsp; TDateTimePicker(Controls).Format:='yyyy年MM月dd日';<br>
 
label1.caption:=formatdatetime('yyyy.mmmm.dd.hh.mm.ss',now);<br>Label1.Caption:=DateTimeToStr(Now); &nbsp;//更多格式见 FormatDateTime
 
label1.caption:=formatdatetime('yyyy"年"mmmmdd"日"hh"时"mm"分"ss"秒"',now);<br>注意:(mmmm已经表示“某月”了)
 
非常感谢!
 

Similar threads

回复
0
查看
830
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部