powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формат даты
24 сообщений из 24, страница 1 из 1
Формат даты
    #35254954
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, при набивке в поле с форматом даты, если она введена неправильно- выходит сообщение, как заменить его своим?
...
Рейтинг: 0 / 0
Формат даты
    #35254980
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше (в FP 2.x) сообщение свое ставилось по ON READERROR.
...
Рейтинг: 0 / 0
Формат даты
    #35255002
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Формат даты
    #35255007
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дрянь какая-то ) ВОт сцылка
http://forum.foxclub.ru/read.php?32,177185,181614#msg-181614
...
Рейтинг: 0 / 0
Формат даты
    #35255151
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прописала как там сказано
Код: plaintext
1.
2.
IF EMPTY(This.Value) = .T. AND This.Text <> TRANSFORM({},"@"+This.Format) 
MessageBox("Ошибка!") 
ENDIF
сообщение на выходит, просто если ошибка поле обнуляется, явно надо что-то добавить, но не пойму
...
Рейтинг: 0 / 0
Формат даты
    #35255625
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где прописала-то? В каком событии? Что записано в свойстве Format для этого TextBox?
...
Рейтинг: 0 / 0
Формат даты
    #35255689
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прописала в валиде, формат- D, свойство strict data entry=0 loose

нашла в хелпе ошибку связанную с датой, попробовала сделать:
Код: plaintext
1.
2.
IF nerror= 2034 
Mes="Ошибка!"
endif

все равно не считывает
...
Рейтинг: 0 / 0
Формат даты
    #35256143
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите "10 отличий" со своим кодом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Local loForm
loForm = CreateObject("form_date")
loForm.show( 1 )

DEFINE CLASS form_date AS form

	DoCreate = .T.
	Caption = "Form1"
	Name = "Form1"

	ADD OBJECT text1 AS textbox WITH ;
		StrictDateEntry =  0 , ;
		Alignment =  3 , ;
		Value = (date()), ;
		Height =  23 , ;
		Left =  108 , ;
		Top =  84 , ;
		Width =  100 , ;
		Name = "Text1"


	PROCEDURE text1.Valid
		IF EMPTY(This.Value) = .T. AND This.Text <> TRANSFORM({},"@"+This.Format)  
			MessageBox("Дата введена некорректно!")  
		ENDIF
	ENDPROC


ENDDEFINE
...
Рейтинг: 0 / 0
Формат даты
    #35256235
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вика2008
Если у вас используется Textbox.ControlSource, то проверять Text в Valid будет не достаточно, т.к. свойство Text в событи Valid будет уже пустым! Обойти это можно введением в класс текстбокса дополнительного свойства LastText, которое должно вестись в InteractiveChange, а в Valid анализировать уже не Text, а LastText.

Код: plaintext
1.
* InteractiveChange()
this.LastText = this.Text

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
* Valid()
#define DIGITS       "0123456789"
with this
if .Format=='D' and empty(.Value) and !empty(chrtran(.LastText,chrtran(.LastText,DIGITS,""),""))
   msgbox("Некорректная дата!",  0 , .Top, .Left)
   .LastText = ""
   return .f.
endif
endwith
...
Рейтинг: 0 / 0
Формат даты
    #35256338
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если TextBox привязан к источнику данных, то можно установить буферизацию и факт изменения отслеживать через

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LOCAL lcFieldName, lnState
lcFieldName = JustExt(this.ControlSource)
lnState = GetFldState(m.lcFieldName)

IF EMPTY(This.Value) AND m.lnState IN ( 2 , 4 )
	* Данное поле пытались изменить, но значение осталось пустым

	* Сбрасываю признак изменения поля
	=SetFldState(m.lcFieldName, m.lnState- 1 )
ENDIF

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

Хранение вводимого по InteractiveChange() значения можно организовать в свойстве TAG. Правда, свойство TAG принимает только и исключительно символьные значения. Поэтому необходимо организовать конвертацию

This.Tag = TransForm(This.Text)
...
Рейтинг: 0 / 0
Формат даты
    #35256348
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XAndy
выдает invalid input на пустую или ошиб дату

ВладимирМ
отличий не нашла, формат даты у меня через . пробовала {..} и с пробелами, все равно не получается
...
Рейтинг: 0 / 0
Формат даты
    #35256369
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообще получается что не могу считать вторую часть
Код: plaintext
This.Text <> TRANSFORM({..},"@"+This.Format)

если оставляю только
Код: plaintext
EMPTY(This.Value) = .T.
то работавет, но на пустую дату тоже выдает сообщение
...
Рейтинг: 0 / 0
Формат даты
    #35256376
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поместите сюда код который у Вас не работает.
...
Рейтинг: 0 / 0
Формат даты
    #35256414
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант для привязки TextBox к полю таблицы с учетом замечаний XAndy

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Local loForm
loForm = CreateObject("form_date")
loForm.show( 1 )

DEFINE CLASS form_date AS form

	DoCreate = .T.
	Caption = "Form1"
	Name = "Form1"

	ADD OBJECT text1 AS textbox WITH ;
		StrictDateEntry =  0 , ;
		Alignment =  3 , ;
		Height =  23 , ;
		Left =  108 , ;
		Top =  84 , ;
		Width =  100 , ;
		Name = "Text1"


	PROCEDURE Load
		Create Cursor test (f1 D)
		Append blank
		replace f1 with Date()
	ENDPROC


	PROCEDURE Init
		ThisForm.text1.ControlSource="test.f1"
	ENDPROC


	PROCEDURE text1.Valid
		#define DIGITS "0123456789"

		IF EMPTY(This.Value) = .T. AND Empty(Chrtran(this.Tag, Chrtran(This.Tag,DIGITS,""), "")) = .F.
			MessageBox("Дата введена некорректно!")  
		EndIf

		* Сброс сохраненного значения
		this.Tag = ""
	ENDPROC


	PROCEDURE text1.InteractiveChange
		This.Tag = TransForm(This.Text)
	ENDPROC


ENDDEFINE
...
Рейтинг: 0 / 0
Формат даты
    #35256428
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
valid
Код: plaintext
1.
2.
IF EMPTY(This.Value) = .T. AND This.Text <> TRANSFORM({..},"@"+This.Format)  
         MessageBox("Дата введена некорректно!")  
    ENDIF 

может как то связано с {..}?
...
Рейтинг: 0 / 0
Формат даты
    #35256450
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что у Вас написано в TextBox.ControlSource?

Если там что-то есть, то проверка на This.Text не имеет смысла, поскольку к моменту выполнения TextBox.Valid() он уже пустой. Т.е. всегда равен {..} и естесственно, в IF не попадаем.
...
Рейтинг: 0 / 0
Формат даты
    #35256523
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в TextBox.ControlSource имя и поте таблицы contacts.data_reg
...
Рейтинг: 0 / 0
Формат даты
    #35256564
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вика2008в TextBox.ControlSource имя и поте таблицы contacts.data_reg

Что выдает

Код: plaintext
?type('contacts.data_reg')
...
Рейтинг: 0 / 0
Формат даты
    #35256639
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist
?type('contacts.data_reg')
=D
...
Рейтинг: 0 / 0
Формат даты
    #35256700
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выставь txt.StrictDateEntry=0 и код будет ничтячно отрабатываться в валиде
...
Рейтинг: 0 / 0
Формат даты
    #35256709
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hel!Riser
стоит, не помогает
...
Рейтинг: 0 / 0
Формат даты
    #35256891
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вика2008
Проверьте всё внимательно, код сам по себе рабочий
...
Рейтинг: 0 / 0
Формат даты
    #35257505
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подправил статью, с учетом возможного сброса значений TextBox.Text

Как заменить сообщение Invalid Date при вводе некорректной даты
...
Рейтинг: 0 / 0
Формат даты
    #35257885
Вика2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ
Спасибо огромное, теперь получилось!

Извините что всех замучила!!!
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формат даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]