Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Календари   Найти похожие ветки 

 
misha_shar ©   (2007-08-24 16:47) [0]

Попытка работы с календарями у меня не удалась. Оказалось что
между свойством Date и системными утилитами преобразующими
переменные типа TDateTime в строки существует разница на-693594;
Я внес изменения в программы Календарей и все стало работать корректно.
Изменения привожу ниже.
unit KOLMHDateTimePicker;
//?? misha_shar 443
//?? misha_shar 450
//  MHDateTimePicker Компонент (MHDateTimePicker Component)
//  Автор (Author): Жаров Дмитрий (Zharov Dmitry) aka Гэндальф (Gandalf)

implementation

const cofDate=693594;

function TMHDateTimePicker.GetDateTime:TDateTime;
var
 TMP:TSystemTime;
begin
 if Perform(DTM_GETSYSTEMTIME,0,Longint(@TMP)) = GDT_VALID then
 begin
   if SystemTime2DateTime(TMP, Result) then
     PDateTimePickerData(CustomData)^.FDateTime:=Result;
 end
 else
   Result := 0;
Result:=Result-cofDate; //?? misha_shar 443
end;
//
procedure TMHDateTimePicker.SetDateTime(const Value:TDateTime);
var
 TMP:TSystemTime;
 DT : TDateTime;  //?? misha_shar 450
begin
DT:=Value+cofDate;  //?? misha_shar
if DateTime2SystemTime(DT,TMP) then //?? misha_shar
//  if DateTime2SystemTime(Value,TMP) then
   PDateTimePickerData(CustomData)^.FDateTime:=Value;
 Perform(DTM_SETSYSTEMTIME,GDT_VALID,Longint(@TMP));
 DoOnChange;
end;
--------------------------------------
//**********************************************************************
// KOLMonthCalendar - класс-оболочка для MonthCalendar Win32 Common Controls
//
// 2006 ECM / thanx to avs for help
// version 0.06   02.03.06
//**********************************************************************
//?? misha_shar 516
//?? misha_shar 642
//?? misha_shar 656
unit KOLMonthCalendar;

implementation

const cofDate=693594;
//
procedure TMonthCalendar.SetDayOfWeek(const Value: TCalDayOfWeek);
var
 DOWFlag: Integer;
 A: array[0..1] of KOLChar;//?? misha_shar 516 исправления для работы с Unicode

function TMonthCalendar.GetDateVal(const Index: Integer): TDateTime;
const
 Msg_Val: Array[0..1] of DWORD = (
   MCM_GETCURSEL,
   MCM_GETTODAY
 );
var
 ST: TSystemTime;
begin
 Perform(Msg_Val[Index],0,Integer(@ST));
 FillChar(ST.wHour,SizeOf(Word)*4,0);
 SystemTime2DateTime(ST,Result);
 Result:=Result-cofDate;//misha_shar 642
end;

procedure TMonthCalendar.SetDateVal(const Index: Integer;
 const Value: TDateTime);
const
 Msg_Val: Array[0..1] of DWORD = (
   MCM_SETCURSEL,
   MCM_SETTODAY
 );
var
 ST : TSystemTime;
 DT : TDateTime; //?? misha_shar 656
begin
DT:=Value+cofDate;//?? misha_shar
 DateTime2SystemTime(DT,ST);//?? misha_shar
 Perform(Msg_Val[Index],0,Integer(@ST));
end;


 
misha_shar ©   (2007-08-27 09:31) [1]

Оказалось что это все не надо если пользоваться KOL программами преобразования Даты и времени. Так что исправления пришлось вернуть назад.


 
ANTPro ©   (2007-08-27 13:35) [2]

> [0] misha_shar ©   (24.08.07 16:47)
> TDateTime в строки существует разница на-693594;

 VCLDate0 = 693594;
 {* Value to convert VCL "date 0" to KOL "date 0" and back.
    This value corresponds to 30-Dec-1899, 0:00:00. So,
    to convert VCL date to KOL date, just subtract this
    value from VCL date. And to convert back from KOL date
    to VCL date, add this value to KOL date.}



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1206124619
Res
2008-03-21 21:36
2008.04.20
smtp


2-1206505428
Pavelkq
2008-03-26 07:23
2008.04.20
Перенос файлов без запроса


3-1195535563
Skyle
2007-11-20 08:12
2008.04.20
Midas(D5)->DataSnap(BDS 2006/2007)


4-1187173808
suspeded
2007-08-15 14:30
2008.04.20
Как узнать заблокирована учетная запись или нет


15-1204645484
Kerk
2008-03-04 18:44
2008.04.20
Скорость сетевого подключения