powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать чтобы поле было обязательным для ввода
12 сообщений из 12, страница 1 из 1
Как сделать чтобы поле было обязательным для ввода
    #33344082
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро!

Мне нужно доделать программу, чтобы при добавлении записи в справочник клиентов невозможно было её добавить не введя телефон клиента.
С Фокспро к сожалению никогда не работал.
Открыл проект, открыл нужный Screen Set, но куда и что добавить - не могу понять.

Пожалуйста, направьте меня на правильный путь.
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344191
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В методе, котрый заносит информацию в таблицу (скорее всего это кнопка Save или Сохранить) перед запоминанием проверить на непустоту телефоный номер. И если он пуст выдать сообщение и вернуть управление на соответсвующий контрол
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344199
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть разные нюансы - смотря какая версия фокса, будет ли работа в сети или только на одном компьютере и т.д. - в вопросе всегда лучше сразу эти дела уточнять.
А в данном случае - можно делать двумя способами:
1) добавить пустую запись в таблицу и вводить данные сразу в поля - если нужное не введено - после выхода из формы ввода удалять эту запись;
2) в форме ввода данных вводить данные в переменные памяти типа - m.tel, m.nomer и т.п. - тогда после проверки, если не введено нужное - просто не делать добавление записи в таблицу, если же все введено верно - то вставить эти данные в свою таблицу командой INSERT INTO MyTabl (m.tel, m.nomer...) VALUE(tel, nomer,...)
(ну понятно, что название MyTabl - свое, как и названия полей tel, nomer и .т.д.)

Второй вариант наверно все же лучше - тем, что меньше движений с таблицей.
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344231
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BurnВ методе, котрый заносит информацию в таблицу (скорее всего это кнопка Save или Сохранить) перед запоминанием проверить на непустоту телефоный номер. И если он пуст выдать сообщение и вернуть управление на соответсвующий контрол

Дело в том что там есть две кнопки "Новый" и "Выход".
При нажатии на Новый происходит вот что :
Код: 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.
IF ALERT(CHR( 13 )+"Вставить нового клиента?")
	*
	DO WHILE .T.
		IF FLOCK("Nsipok")
	      
		       
 			   SELECT Nsipok
			   DIMENSION x_kpok[ 1 ]
			   x_kpok[ 1 ] =  0 
			   SELECT MAX(Nsipok.kpok) FROM Nsipok INTO ARRAY x_kpok
			   *
			   INSERT INTO Nsipok (kfil, kpok, npok, ktab, dat_izm) VALUES     (Title.kfil, x_kpok[ 1 ]+ 1 , "? ? ?", work_ktab, Ret_dat())
			   EXIT
		  
		ELSE
			
			IF NOT ALERT("Невозможно вставить запись."+CHR( 13 );
								+"Попробовать еще?")
				EXIT
			ENDIF
		ENDIF
	ENDDO
	*
	UNLOCK ALL
	*
ENDIF
*
SHOW GETS
*
IF WEXIST(brw_title)
	SHOW WINDOW (brw_title) REFRESH
ELSE		
	DO View_pok WITH "NORM"
ENDIF

Не могу понять куда мне и что вставлять :(

А может возможно это сделать при помощи свойств (WHEN, VALID,MESSAGE,ERROR) поля для ввода?
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344317
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я вот подумал, а может быть просто в свойство VALID поля ввода поместить нечто подобное на текст ниже:

Код: plaintext
1.
2.
3.
4.
IIF (EMPTY(ALLTRIM(nsipok.ctel1)))
  * Вывод окна-сообщения о необходимости ввода (тока я пока незнаю как выводить окошко)
ELSE
  UNLOCK ALL * Это я добавил сюда, т.к. оно стоит в свойстве VALID
ENDIF
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344713
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как установить фокус на поле ввода?
Я делаю так :
Код: plaintext
1.
2.
3.
4.
5.
if Empty(Nsipok.ctel1)
  wait window "Введите телефон!"
  activate Nsipok.ctel1
else
....
endif
но мне при компиляции проекта выдается ошибка:
Compiling c:\agro_my\sklad\screen\nsipok.spr
activate Nsipok.ctel1
Error in line 1003: Syntax error.
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344740
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая версия FoxPro?
Для 2.x пойдет так:

Код: plaintext
_CUROBJ = OBJNUM("Nsipok.ctel1")

(если не напутал чего).

А проверка текущего контрола - по VARREAD() (действует и в BROWSE-окнах).
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344780
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrriА какая версия FoxPro?
Для 2.x пойдет так:

Код: plaintext
_CUROBJ = OBJNUM("Nsipok.ctel1")

(если не напутал чего).

А проверка текущего контрола - по VARREAD() (действует и в BROWSE-окнах).

не получается :(
может быть иззза того что у меня в скринсете три окошка, в одном из них есть кнопка при нажатии которой выполняется
Код: plaintext
1.
2.
3.
4.
5.
if Empty(Nsipok.ctel1)
  wait window "Введите телефон!"
  ]_CUROBJ = OBJNUM("Nsipok.ctel1")
else
....
endif
а само поле для ввода Nsipok.ctel1 находится в другом окошке....
а может быть это изза wait window "...."
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33344791
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Urri]А какая версия FoxPro?[quot]
FoxPro 2.6 for Windows
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33345136
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if Empty(как_этот_контрол_точно_называется_(имя_переменной,_сопоставленной_контролу))
  activate window окно_где_этот_контрол_находится
  _CUROBJ = OBJNUM("как_этот_контрол_точно_называется_(имя_переменной,_сопоставленной_контролу)")
  wait window "Введите телефон!"
else
....
  *** здесь где-нибудь еще ***
  clear read
  ****************************
endif

Еще важно, откуда этот скрипт вызывается. Хорошо, если из функции valid кнопки "Сохранить изменения" - при этом сама эта кнопка не терминирует read, которым скринсет подперт (галка terminate read должна быть сброшена).
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33345208
Brother_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrriМожет, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if Empty(как_этот_контрол_точно_называется_(имя_переменной,_сопоставленной_контролу))
  activate window окно_где_этот_контрол_находится
  _CUROBJ = OBJNUM("как_этот_контрол_точно_называется_(имя_переменной,_сопоставленной_контролу)")
  wait window "Введите телефон!"
else
....
  *** здесь где-нибудь еще ***
  clear read
  ****************************
endif

Еще важно, откуда этот скрипт вызывается. Хорошо, если из функции valid кнопки "Сохранить изменения" - при этом сама эта кнопка не терминирует read, которым скринсет подперт (галка terminate read должна быть сброшена).
чтото выдает ошибку - пишет не найдено такое окно :
у меня в скринсете nsipok 3 окна - nsipok.scx,nsipok2.scx,nsipok3.scx :
поэтому я пишу так
Код: plaintext
activate window nsipok3
- но выдается ошибка
...
Рейтинг: 0 / 0
Как сделать чтобы поле было обязательным для ввода
    #33345317
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя окна не обязательно совпадает с именем файла окна. Смотрите в опциях окна.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать чтобы поле было обязательным для ввода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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