Конференция "Основная" » TMonthCalendar(in TDateTimePicker) в дельфи сделать как в вебе... [D7]
 
  • sniknik © (07.11.16 17:26) [0]
    Нужно ограничить TMonthCalendar выбором только месяца (видели на сайте "хотим также")... показ "месяц год" легко - формат = MMMM yyyy будет нужное "Ноябрь 2016", а вот выбор такой же не получается, и в нете не находится (только свою формочку выбора сделать, чего не хочется т.к. будет "выпадать" из тем на разных компах).

    Чтобы понятнее, хочу тоже самое, что будет если кликнуть на заголовке где "месяц год" в TMonthCalendar, и чтобы после выбора месяца оно закрывалось а не возвращалось к выбору дня. Желательно переделать из "родного", "левые"  компоненты не предлагать, запарюсь согласовывать необходимость... проще уж свою формочку.

    ???
  • sniknik © (07.11.16 18:02) [1]
    хм, решил, :) на первый взгляд работает как надо...
    procedure TAnalForm.dtMonthCalcDropDown(Sender: TObject);
    const
     DTM_FIRST          = $1000;
     DTM_GETMONTHCAL    = DTM_FIRST + 8;
     MCM_SETCURRENTVIEW = DTM_FIRST + 32;
     MCMV_MONTH = 1;
    var
     calHandle: THandle;
    begin
     calHandle:= SendMessage(TDateTimePicker(Sender).Handle, DTM_GETMONTHCAL, 0, 0);
     SendMessage(calHandle, MCM_SETCURRENTVIEW, 0, MCMV_MONTH);
    end;

  • sniknik © (07.11.16 18:04) [2]
    хотя нет, поспешил, после выбора месяца нужно еще выбор дня убрать.
  • Token (07.11.16 18:06) [3]
    У меня толком не получилось мигает...
  • Token (07.11.16 18:08) [4]
    TMMCalendar=class(TMonthCalendar)
       procedure ChgMonth(var Message: TWMNotify); message CN_NOTIFY;
     end;



    procedure TMMCalendar.ChgMonth(var Message: TWMNotify);
    const
     MCN_VIEWCHANGE=-750;

    type
     tagNMViewChange=record
       hwndFrom: HWND;
       idFrom: UINT_PTR;
       code: Integer;
       dwOldView: DWORD;
       dwNewView: DWORD;
     end;
     PNMViewChange=^tagNMViewChange;

    begin
     if (Message.NMHdr.code=MCN_VIEWCHANGE)and(PNMViewChange(Message.NMHdr).dwNewView=MC MV_MONTH) then
     begin
       
       SendMessage(Handle,MCM_SETCURRENTVIEW,0,MCMV_YEAR);
       
     end;
    end;

  • sniknik © (07.11.16 18:22) [5]
    не, все нормально, к прошлому посту + добавочный  код, на нажатиях клавиш, на события к объекту внешнему или внутреннему, типа сменить фокус, перейти с следующему (WM_NEXTDLGCTL) и т.д. почему то не реагировало... ничего и так пойдет

    procedure TAnalForm.dtMonthCalcChange(Sender: TObject);
    begin
     keybd_event(13, 0, 0, 0);
     keybd_event(13, 0, KEYEVENTF_KEYUP, 0);

     keybd_event(9, 0, 0, 0);
     keybd_event(9, 0, KEYEVENTF_KEYUP, 0);
    end;

  • Игорь Шевченко © (07.11.16 22:38) [6]

    > TAnalForm


    Какие имена, такие программы.
  • sniknik © (08.11.16 07:53) [7]
    от слова аналитика, а не то, о чем думают разные извращенные типы. :)
 
Конференция "Основная" » TMonthCalendar(in TDateTimePicker) в дельфи сделать как в вебе... [D7]
Есть новые Нет новых   [118626   +13][b:0][p:0.001]