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

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

TDateTimePicker


iviom ©   (2007-04-13 15:27:00) 

Здравствуйте.
Подскажите, пожалуйста, по поводу котнрола TDateTimePicker. Вывести в него дату получилось, при это я установила свйоства:
Format:= 'dd.MM.yyyy HH.mm.ss';
Kind:= dtkTime;

Как не выводить туда дату? Чтобы в поле ничего не было?
Я использую грид, в котором или есть дата или нет (то есть NULL). И по  нажатию(выделению строки) хочу выводить значение даты в данный контрол.


dmdel   (2007-04-19 09:23:00) [1]

Лично я пользуюсь в этих случаях компонентом DateEdit. Это Rx-lib. Если надо, могу прислать.


_Аноним   (2007-04-18 22:24:00) [2]


> Как бы сделать так, чтобы пользоватлеь мог менять и время
> и дату?

Два DateTimePicker'а рядом


iviom   (2007-04-18 17:07:00) [3]

Спасибо, болшое, за ответы. Решила все-таки с чекбоксами пока попробывать.
Только вот такая странность появилась.
DateTimePicker позволяет одновременно изменить только либо дату либо время. Это зависит от свойства DateTimePicker.Kind. Если там стоит свойство dtkDate - то контрол позволяет пользователю менять дату, а если dtkTime - то время. Как бы сделать так, чтобы пользоватлеь мог менять и время и дату?


_Аноним   (2007-04-14 11:44:00) [4]

Тут вопрос в том, данные доступны только для чтения, или же и для модификации (в том числе для уствновки NULL)
если первое - то выводить в эдит
если второе - то пикер с чекбокасами, имхо


{RASkov}   (2007-04-14 11:28:00) [5]

> А если дата была введена, а теперь надо ее сделать Null?

Как вариант - можно обработать нажатие клавишь Del+Ctrl... например.

> Ну и вместо FModified, возможно, лучше использовать Tag,
> особенно если таких DateTimePicker'ов будет несколько.

Эт точно.


Virgo_Style   (2007-04-14 11:08:00) [6]

{RASkov}   (13.04.07 23:54) [8]
А если дата была введена, а теперь надо ее сделать Null?
Ну и вместо FModified, возможно, лучше использовать Tag, особенно если таких DateTimePicker'ов будет несколько.


{RASkov}   (2007-04-13 23:54:00) [7]

Ну может быть вот эту версию раскрутить. Без чекбокса(он всамом деле сбивает столку):

var
 FModified: Boolean;

procedure TForm1.<Где-то там на OnDataChange или еще куда>;
begin
 если дата=есть тогда DateTimePicker1.Format:='dd.MM.yyyy HH.mm.ss'
  иначе DateTimePicker1.Format:=' ';
end;

procedure TForm1.DateTimePicker1Enter(Sender: TObject);
begin
 DateTimePicker1.Format:='dd.MM.yyyy HH.mm.ss';
 FModified:=False;
end;

procedure TForm1.DateTimePicker1Exit(Sender: TObject);
begin
 if not FModified then DateTimePicker1.Format:=' ';
end;

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
 FModified:=True;
end;


Virgo_Style   (2007-04-13 19:51:00) [8]

Лично мне вариант через CheckBox понравился: ShowCheckBox =true;

procedure TForm1.DateTimePicker1Click(Sender: TObject);
begin
 with (Sender as TDateTimePicker) do
   if Checked then Format:='' else Format:=' ';
end;

procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
begin
 DateTimePicker1Click(Sender);
end;


Иначе, imho, только несколькими контролами.


Virgo_Style   (2007-04-13 19:43:00) [9]

iviom   (13.04.07 17:07) [5]
А если делать так, то потом никак нельзя редактировать...


Ввести - да, не получается, а выбрать в выпадающем списке можно. Скорее всего, все же надо делать либо полностью вручную, либо использовать для ввода отдельную форму.


iviom   (2007-04-13 17:07:00) [10]


> Выводи в обычный Edit...


В Edit никак нельзя, потому что предполагается возможность удобноо редактирования. Поэтому собственно говоря и выбран контрол, способный удобно отображать дату.


> Там есть возможность показать чек-бокс. Можно сделать так,
>  что если null - то чек бокс выключен


Попробывала через чекбок, действительно можно, но смотрится как-то не по-русски =). Сереньким дата подсвечивается... Да и не каждый быстро собразит, что надо сначало поставить галочку, а потом только редактировать...


> DateTimePicker1.Format:=' ' ?


А если делать так, то потом никак нельзя редактировать...

А так хочется просто вывести дату, если она есть и не выводить, если ее нет.. И дать человеку ее просто настроить, если он хочет.


Virgo_Style   (2007-04-13 15:41:00) [11]

DateTimePicker1.Format:=' '?


{RASkov}   (2007-04-13 15:35:00) [12]

> [1] _Аноним   (13.04.07 15:32)
Там есть возможность показать чек-бокс. Можно сделать так, что если null - то чек бокс выключен

Думаю, будет сбивать с толку... все это. Имхо.


{RASkov}   (2007-04-13 15:33:00) [13]

> [0] iviom   (13.04.07 15:27)

Выводи в обычный Edit...

> или есть дата или нет

если дата=есть тогда Edit.Text:=FormatDateTime() иначе Edit.Text:='даты почему-то нет';


_Аноним   (2007-04-13 15:32:00) [14]

Там есть возможность показать чек-бокс. Можно сделать так, что если null - то чек бокс выключен


Наверх

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