![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
1147 |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
В программе нужно постоянно вводить текущую дату в dbedit1. Видел такой вариант, когда вместо того чтобы вводить дату самому, при нажатии пробела автоматически вводится сначала число, затем при втором нажатии пробела - месяц, при третьем год и сразу же переход курсора в dbedit2. Т.е. программа берет системную дату и помещает ее в нужное поле. Подскажите пожалуйста, как реализовать такой вариант???
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
К примеру, так:
uses DateUtils;Это - само заполнение нажатиями пробелов, ну, а после заполнения, уж сам перекинь фокус на другой компонент... |
1147 |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
а можно пояснить строки?:
0: curr.Text := Format('%2d/', [DayOf(Now)]); что означает 0, 3 и 6 вначале? и значения с процентами? Данные в квадратных скобках воспринимаются программой как undecleared identifier 'DayOf', 'MonthOf', 'YearOf' Сообщение отредактировано: 1147 - 28.06.2009 0:52 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Данные в квадратных скобках воспринимаются программой как undecleared identifier 'DayOf', 'MonthOf', 'YearOf' А тот модуль, который приведен первой строкой, ты подключил? Я не просто так его написал...Цитата что означает 0, 3 и 6 вначале? Логика: если содержимое DBEdit-а пусто (длина содержимого = 0), то надо добавить первый кусок - число... Число и разделитель - это уже 3 символа, если при нажатии пробела в DBEdit-е уже есть эти 3 символа, то добавляем месяц, и так далее...Цитата и значения с процентами? Это форматная строка для функции Format, процент - это признак спецификатора формата, что функция ожидает в качестве параметра, и как собственно это форматировать... Вот "d" - это десятичное число, а двойка перед ним - это сколько позиций выделять под это число... Подробнее - в Хелпе по Format-у |
1147 |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Понятно, все замечательно получается, вот только число и месяц, например 01.06 получается как 1. 6, а при использовании поиска это может вызвать некоторые проблемы . Что влияет на такой вывод формата и можно ли добавить нули если число и месяц состоят из одной цифры?
И еще такой вопрос: у меня была маска для ввода такого формата: __.__.____ Это уже означает что строка <>0. Соответственно маску нужно убрать. В случае если пользователь самостоятельно вводит дату, вместо точек могут оказаться запятые и тд. что также нежелательно. Нельзя ли маску приравнять к 0 или как то по другому решить этот вопрос? В общем чтобы не отказываться от маски? Сообщение отредактировано: 1147 - 28.06.2009 1:33 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Так?
procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char); |
1147 |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Большое спасибо за неоценимую помощь, основная проблема решена, а с маской придумаю что-нибудь
![]() |
1147 |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
А можно ли использовать автоматический ввод даты для ячейки DBGrid? Вернее в определенном столбце все ячейки должны обладать такой возможностью
Сообщение отредактировано: 1147 - 7.07.2009 0:41 |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Подменяем стандартный InPlace редактор на DBEdit, "и всего делов" (С)... Вот тут описывается технология: Google cache: НеОбычный TDBGrid (или в DRKB -> VCL -> Вставка одних компонентов в другие -> Помещение компонентов в TDBGrid)
|
1147 |
![]()
Сообщение
#10
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Для этого необходимо чтобы в DBEdit уже стояла дата или он может быть пустым?
Ясно) Тогда нужно чтобы дата без нажатия пробела сразу (например при запуске программы) появлялась в каком-нибудь нивидимом компоненте который затем помещается в ячейук DBGridа Сообщение отредактировано: 1147 - 7.07.2009 1:31 |
1147 |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Это не совсем то что хотелось бы... Нельзя ли без создания каких то ненужных компонентов, сделать так чтобы при фокусировке, в ячейке dbgrida появлялась дата?
Например как с label: var d:string; Сообщение отредактировано: 1147 - 9.07.2009 18:18 |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата сделать так чтобы при фокусировке, в ячейке dbgrida появлялась дата Если поле, хранящее дату - пустое, то при клике по нему туда заносится сегодняшнее число. Уже существующие значения на сегодня не меняются (если надо, чтоб менялись - убери условие). И не забудь поменять название столбца не свое...procedure TForm1.DBGrid1CellClick(Column: TColumn); |
1147 |
![]()
Сообщение
#13
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
возникает ошибка: "dataset not in edit or insert mode". Не пойму в чем дело..
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата Не пойму в чем дело.. Я тоже... Код, приведенный выше, тестировался, и отработал на реальной базе данных. Попробуй на новом проекте. |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 7:31 |