-
Нужно ограничить TMonthCalendar выбором только месяца (видели на сайте "хотим также")... показ "месяц год" легко - формат = MMMM yyyy будет нужное "Ноябрь 2016", а вот выбор такой же не получается, и в нете не находится (только свою формочку выбора сделать, чего не хочется т.к. будет "выпадать" из тем на разных компах).
Чтобы понятнее, хочу тоже самое, что будет если кликнуть на заголовке где "месяц год" в TMonthCalendar, и чтобы после выбора месяца оно закрывалось а не возвращалось к выбору дня. Желательно переделать из "родного", "левые" компоненты не предлагать, запарюсь согласовывать необходимость... проще уж свою формочку.
???
-
хм, решил, :) на первый взгляд работает как надо... 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;
-
хотя нет, поспешил, после выбора месяца нужно еще выбор дня убрать.
-
У меня толком не получилось мигает...
-
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;
-
не, все нормально, к прошлому посту + добавочный код, на нажатиях клавиш, на события к объекту внешнему или внутреннему, типа сменить фокус, перейти с следующему (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;
-
> TAnalForm
Какие имена, такие программы.
-
от слова аналитика, а не то, о чем думают разные извращенные типы. :)
|