Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В компоненте MHMonthCalendar не работает событие OnChange


Страницы:   1 2

ElDev ©   (2006-02-12 19:34:00) 

Народ помогите в MHMonthCalendar не работает OnChange, а в аналогичном MHDateTimePicker всё нормально.

пр.

Calendar.OnChange := TOnEvent(MakeMethod(Calendar, @OnChange));


avs   (2006-02-21 15:18:00) [21]

Если  dt2.Text:=Date2StrFmt('dd.MM.yyyy',MonthCalendar1.Date); , то
MonthCalendar1.Date=0


ECM   (2006-02-21 15:15:00) [22]

Вообще-то надо так:

procedure TForm1.MonthCalendar1Change(Sender: PObj);
begin
 dt2.Text:=Date2StrFmt('dd.MM.yyyy',MonthCalendar1. Date);  
 MonthCalendar1.Hide;
end;

Я не поддержал уже имеющееся в TControl свойство DateTime (а возможно надо бы)


avs   (2006-02-21 14:57:00) [23]

Уважаемый Евгений! Установил KolMonthCalendar D7 WinXP SP2.
Все работает, в смысле, события отрабатывыются, но при попытке
считать выбранное значение происходит следующее:

procedure TForm1.MonthCalendar1Change(Sender: PObj);
begin
dt2.Text:=Date2StrFmt('dd.MM.yyyy',MonthCalendar1.DateTime);
MonthCalendar1.Hide;
end;

(dt2 - KolEditbox)
имеем: MonthCalendar1.DateTime=-NAN

с увыжением AVS


GMax   (2006-02-21 09:54:00) [24]

дело скорее не в D7, а в w2ksp4
я ж написал, что просто запустил демку, не компилировал заново, а запустил из архива


ECM   (2006-02-20 22:48:00) [25]

Ok. Попробую завтра поставить - D7


GMax   (2006-02-20 22:09:00) [26]

вот скриншот EXE-шника демы. просто распаковал и запустил.
http://www.terraspace.ru/gmax/mk1.gif
и скриншот попытки загрузки демы в дельфи7
http://www.terraspace.ru/gmax/mk2.gif

w2ksp4eng

даже не знаю что и смотреть...


homm   (2006-02-18 19:56:00) [27]


> скриншот для демо:
Вах!


ECM   (2006-02-18 19:35:00) [28]

Фуф.. доделал. Теперь вроде всё...
http://www.kolnmck.ru/files/components/controls/kolmonthcalendar.zip
58 493 (+Зеркало +Демо)
скриншот для демо:
http://www.kolnmck.ru/files/components/controls/img/demomonthcalendar.png
:))


ECM   (2006-02-17 12:24:00) [29]

http://www.kolnmck.ru/files/components/controls/kolmonthcalendar.zip
14 926 байт
Это первая версия ... но уже вполне рабочая... есть зеркало + пакэджи для D5,D6,D7 (но пока без демо) по тексту вставлены коментарии по формату xHelpGen...
Просьба обладателей D5 и D7 проверить у себя, если не затруднит


ECM   (2006-02-13 13:27:00) [30]

Тут такая ситуация - MHMonthCalendar лежащий на kolnmck.ru похоже
недоделан... (видны торчащие и ненужные тут рудименты от взятого за снову - MHDateTimePicker)
Нотификации DTN_xxx в WndProcMHMonthCalendar ему не нужны вовсе (это всё для DateTimePicker)

-746  это MCN_SELECT  уведомление о выборе (именно для MonthCalendar).
Sent by a month calendar control when the user makes an explicit date selection within a month calendar control
Так что изменеие приведенное выше - действительно будет работать...

Я сел было доделывать MHMontCalendar - но в процессе решил сделать всё заново... доделаю - выложу на kolnmck.ru


A_Vs   (2006-02-13 12:03:00) [31]

function WndProcMHMonthCalendar(Sender : PControl; var Msg:TMsg; var Rslt:Integer):Boolean;
var
 NMDC:PNMDateTimeChange;
 MHMonthCalendarNow:PMHMonthCalendar;
 Data: PMonthCalendarData;
begin
 Result := False;
 if Msg.message=WM_NOTIFY then
 begin
   NMDC:=PNMDateTimeChange(Msg.lParam);
   MHMonthCalendarNow:=PMHMonthCalendar(Sender);
   Data:=MHMonthCalendarNow.CustomData;
//   LogFileOutput('c:\LOG_F.txt',Int2str(NMDC.nmhdr.code));
   with Data^ do
   begin
     case NMDC.nmhdr.code of
       DTN_DATETIMECHANGE:
       begin
         if NMDC.dwFlags=GDT_VALID then
         begin
           SystemTime2DateTime(NMDC.st,FDateTime);
           if Assigned(MHMonthCalendarNow.OnChange) then
             MHMonthCalendarNow.OnChange(Sender);
           FChecked:=True;
           Result:=True;
         end;
         if NMDC.dwFlags=GDT_NONE then
           FChecked:=False;
       end;

       DTN_CLOSEUP:
       begin
         if Assigned(FOnCloseUp) then
           FOnCloseUp(Sender);
       end;

       DTN_DROPDOWN:
       begin
         if Assigned(FOnDropDown) then
           FOnDropDown(Sender);
       end;

       DTN_USERSTRING:
       begin
         if Assigned(FOnUserString) then
           FOnUserString(Sender);
       end;

       DTN_FORMAT:
       begin
         if Assigned(FOnFormat) then
           FOnFormat(Sender);
       end;

       DTN_FORMATQUERY:
       begin
         if Assigned(FOnFormatQuery) then
           FOnFormatQuery(Sender);
       end;
       -746:if Assigned(MHMonthCalendarNow.OnChange) then MHMonthCalendarNow.OnChange(Sender);
{Что такое -746 не выяснял, но так работает}
     end; //case
   end;
 end;

end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо