Как я могу проверить, ввел ли пользователь значение в TDateTimePicker? - PullRequest
1 голос
/ 06 августа 2020

Я использую приложение VCL Forms в Delphi 10.3. Я использую TDateTimePicker для записи даты и времени.

В какой тип переменной нужно сохранить значение и как проверить, действительно ли пользователь ввел значение, а не оставил его пустым ?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Какой тип переменной я должен сохранить в

TDateTimePicker имеет Date, Time и DateTime свойства, которые возвращают значения TDate, TTime и TDateTime соответственно.

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

По умолчанию TDateTimePicker не может быть «пустым». Его свойства Date / Time / DateTime всегда будут возвращать некоторое значение.

Если вы хотите, чтобы пользователь мог указать не-значение, TDateTimePicker имеет a ShowCheckbox свойство для этой цели. Установите его на True, а затем вы можете запросить свойство Checked перед использованием значений Date / Time / DateTime.

Я просто нужен способ проверить, внес ли пользователь какие-либо изменения.

Если вы просто хотите узнать, изменил ли пользователь значение по умолчанию, вы можете использовать OnChange мероприятие для этой цели. Например, объявите логическую переменную (или просто используйте свойство Tag), сначала установите для нее значение False, а затем задайте OnChange значение True, а затем вы можете проверяйте это значение при необходимости.

1 голос
/ 06 августа 2020

Какой тип переменной я должен сохранить значение в [...]?

Это то, что вы можете легко выяснить самостоятельно, используя IDE. Действительно, когда вы вводите имя элемента управления выбора даты, времени и точку, Code Insight позволяет изучить свойства и методы элемента управления. Ваша первая попытка будет примерно Date, и вот вы go:

Screenshot of Code Insight showing us some properties of a TDateTimePicker

I don't know if you use your control to pick only a date or a datetime value, but in either case there is a good choice here: DateTime or Date. I'll assume you want the date only; it makes no difference for my A.

But now you think to yourself, "this Date property seems to be precisely the thing I am looking for, but how can I be sure it really does contain the date displayed in the control (and not, say, the date the app was compiled)?"

Then you close the Code Insight list, place the caret inside the Date identifier, and press F1, which displays справка :

Указывает дату, которая отмечены в календаре.

Бин go!

Но какой тип должна иметь переменная? Что ж, и Code Insight, и документация говорят вам следующее: TDate.

[Как] как мне проверить, действительно ли пользователь ввел значение, а не оставил его пустым?

Ну, на самом деле, TDateTimePicker не может быть пустым.

Итак, ваш реальный вопрос, вероятно, такой: «Как я могу получить уведомление, когда пользователь меняет дату?»

Это также то, что вы можете обнаружить в среде IDE. Выберите средство выбора даты и времени в конструкторе форм и go на вкладке События в Инспекторе объектов :

Снимок экрана инспектора объектов в среде RAD Studio IDE, показывающий события элемента управления TDateTimePicker.

Я оставлю это вам в качестве упражнения, чтобы выяснить, какое событие использовать. Также используйте клавишу F1, когда выбрано событие.

Но использовать такое событие - ужасная идея. Я полагаю, вы хотите использовать его для включения кнопки Далее или Отправить . Не делай этого. Если начальная дата совпадает с той, которую пользователь хочет отправить, они будут очень раздражены тем, что они не могут продолжить, не изменив дату, а затем вернув ее обратно (если им даже удастся выяснить, что им нужно сделать).

...