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

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

Вывести пустой TDateTimePicker


Страницы:   1 2 3 4

С-К ©   (2014-08-08 17:44:00) 

То есть, чтобы DateTimePicker отображал пустые места, типа «  .  .  »

Можно, конечно, dtp.Format := ''''''; - а потом при выборе значения из календарика подставлять dtp.Format := '';
но в таком случае в первоначально пустом виде нельзя сразу ручками вбить дату цифрами.

Если присвоить dtp.Date := 0, то, конечно, просто выставится 1899 год.

А нужно, чтобы DateTimePicker изначально был пустым и это можно было определить. Если так и не заполнили - то в БД писать nil.


С-К   (2014-08-11 19:35:00) [41]


> Что значит ты бы не сказал?

что сразу видно, что дата не введена.


> Ты хочешь сказать что люди разрабатывающие юзабилити в MS
> делают все не верно?

я думаю нет смысла дискутировать на эту тему.

Я в целом обозначил задачу, она такая.


Rouse__   (2014-08-11 17:50:00) [42]

Что значит ты бы не сказал? Ты хочешь сказать что люди разрабатывающие юзабилити в MS делают все не верно? ;)


С-К   (2014-08-11 17:23:00) [43]


>  при этом когда чекбокс выключен, дата задисейблена и сразу
> видно что дата не введена.

ну я бы не сказал, что верно.

Вот: http://goo.gl/5JwKAi

Задисейблено - видно, но вот что дата не введена - не факт. Многие подумают, что дата введена (сегодняшнее число), но её изменить нельзя. Корректно было - если даты реально не было (пустое поле).


Rouse_   (2014-08-11 16:19:00) [44]


> С-К

Ну хорошо, давай попробуем без велосипедов.
Смотри, у TDateTimePicker есть стиль DTS_SHOWNONE: http://msdn.microsoft.com/en-us/library/windows/desktop/bb761728(v=vs.85).aspx
Который отвечает за отображение того что пикер не содержит валидной даты.

Управляется этот стиль при помощи свойства ShowCheckbox, при этом когда чекбокс выключен, дата задисейблена и сразу видно что дата не введена.


sniknik   (2014-08-11 14:15:00) [45]

не поверх, внутрь.


С-К   (2014-08-11 13:47:00) [46]

sniknik, как я понял поверх dtp ты фигачишь Edit... интересная идея, спасибо


sniknik   (2014-08-11 13:34:00) [47]

procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Parent:= DateTimePicker1;
 Edit1.Align := alLeft;
 Edit1.BorderStyle:= bsNone;
 Edit1.Width:= DateTimePicker1.ClientWidth - GetSystemMetrics(SM_CXVSCROLL);
 //Edit1.ReadOnly:= true;
end;

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
 Edit1.Text:= DateToStr(DateTimePicker1.Date);
end;

procedure TForm1.DateTimePicker1Enter(Sender: TObject);
begin
 DateTimePicker1.DateTime:= StrToDateDef(Form1.Edit1.Text, Now());
end;


Rouse_   (2014-08-11 13:17:00) [48]


> ну нет. Дело в том, что пользователи привыкли выбирать дату зачастую из календарика, который отображается по стрелочке вниз. Это же не чисто текстовый контрол.

Стандартный TDateTimePicker является составным контролом из Edit и MonthCalendar, тебе предлагают сделать то-же самое, только поведение эдита изменить на такое, как тебе нужно.


С-К   (2014-08-11 13:13:00) [49]

>MonthCalendar

что это такое?


junglecat   (2014-08-11 13:10:00) [50]

> [19] С-К   (11.08.14 13:07)

MaskEdit + MonthCalendar?
да можно и просто readonly Edit


С-К   (2014-08-11 13:07:00) [51]


> там делов-то на 15 минут.

ну нет. Дело в том, что пользователи привыкли выбирать дату зачастую из календарика, который отображается по стрелочке вниз. Это же не чисто текстовый контрол.


junglecat   (2014-08-11 12:10:00) [52]

MaskEdit?


Rouse_   (2014-08-11 11:25:00) [53]


> как?

Не использовал бы ТDateTimePicker, а по быстрому реализовал бы свой составной контрол (который будет отображать к примеру "дата не введена"), там делов-то на 15 минут.


С-К   (2014-08-11 11:15:00) [54]


> начальная дата известна, конечная пока открыта

верно, это еще один пример такого контрола


С-К   (2014-08-11 11:13:00) [55]


> А ShowCheckbox или что-то наподобие

в принципе да, но решение не такое интуитивное (
Мы раньше сами компонент писали, он все это позволял. А сейчас требование работать на стандартных компонентах и жалко, что даже в XE контрол этого не позволяет.

Или как-то можно?


Inovet   (2014-08-11 11:12:00) [56]

Наварример, надо ввести период, начальная дата известна, конечная пока открыта. Интуитивно её надо или не заполнять или стереь, если уже ввели что-то раньше. Галочки там и прочее дополнительная путаница


junglecat   (2014-08-11 11:11:00) [57]

А ShowCheckbox или что-то наподобие - не то ли часом?


sniknik   (2014-08-11 10:43:00) [58]

> А если заполнили, а потом передумали?
в большинстве случаев это значит полный отказ от ввода всего (если продолжать пример анкеты).
но вообще если будет (/сделать) датапикер с дополнительным(/начальным) пустым значением, то разве проблема сделать в нем очистку ввода? ну например прямо в поле редактирования.


С-К   (2014-08-11 10:43:00) [59]


> однако я бы сделал это совершенно по другому.

как?


> А если заполнили, а потом передумали?

вот именно. Для пользователя интуитивно  просто стереть дату, выделить её и нажать DEL. Но контрол стандартный это, судя по всему, не позволяет (


Styx   (2014-08-11 10:36:00) [60]

А если заполнили, а потом передумали? Imho, лучше дополнительную галочку сделать.


Страницы:   1 2 3 4

Наверх

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