Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (Do Form MyForm With ...) Передача параметров в объекты / 5 сообщений из 5, страница 1 из 1
30.05.2005, 09:49:24
    #33089965
-Moryachok-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Do Form MyForm With ...) Передача параметров в объекты
Необходимо запустить форму с параметрами
Код: plaintext
1.
DO FORM docum_s\f_edit_grid.scx WITH "789456", "Parametr nomer 2",  88 , "кг"
в Init'е формы пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
LPARAMETERS tcKmat, tcName, tnKeip, tcNameEi
ThisForm.Caption = dfCaption
ThisForm.Label1.Caption = "Код м-ла"
ThisForm.Label2.Caption = "Наименование материала"
ThisForm.Label3.Caption = "Ед. изм."
WITH ThisForm.text1 
	.Alignment =  1  
	.ControlSource = ""
	.ControlSource = tcKmat
	.Format = "K"
	.InputMask = "999999"
ENDWITH 
MESSAGEBOX(tcName)
WITH ThisForm.text2 
	.Alignment =  0  
	.ControlSource = ""
	.ControlSource = tcName	&& Ошибка!!!
	.Format = "K" 
ENDWITH 
*!*	WITH ThisForm.Combo1 
*!*		.RowSourse = 
*!*	ENDWITH 
При передаче ControlSource второму TextBox'у вылетает ошибка 1742, хотя параметр tcName и tcKmat -> Character, а ошибка вылазит только на Text2. Если ставлю вместо tcName -> tcKmat то все нормально...Параметр tcName виден...
...
Рейтинг: 0 / 0
30.05.2005, 10:03:50
    #33089987
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Do Form MyForm With ...) Передача параметров в объекты
Во-первых, свойство ControlSource принимает символьную переменную, которая внутри себя содержит имя источника данных. Т.е. в твоем случае:

Код: plaintext
1.
tcName = "Parametr nomer 2"
ThisForm.Text2.ControlSource = m.tcName

Означает, что фактически источником данных для TextBox будет содержимое параметра

ThisForm.Text1.ControlSource = "Parametr nomer 2"

Естесственно, это вызывает недоумение.

Во-вторых, присваивать ControlSource в качестве источника данных переменную памяти, надо с крайней осторожностью. Весь вопрос в области видимости переменных. В данном случае, по завершении события Init-формы, данные переменные памяти будут уничтожены.

Если вопрос стоял только в том, чтобы присвоить некоторые значения при открытии формы, то надо делать присвоение не ControlSource, а Value.

ThisForm.Text2.Value = m.tcName
...
Рейтинг: 0 / 0
30.05.2005, 10:53:17
    #33090112
-Moryachok-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Do Form MyForm With ...) Передача параметров в объекты
Код: 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.
LPARAMETERS tcKmat, tcName, tnKeip, tcNameEi
*!*	PRIVATE pcKmat, pcName, pnKeip, pcNameEi
PUBLIC pcKmat, pcName, pnKeip, pcNameEi
pcKmat=tcKmat
pcName=tcName
pnKeip=tnKeip
pcNameEi=tcNameEi
*!*SET STEP ON 
ThisForm.Caption = dfCaption
ThisForm.Label1.Caption = "Код м-ла"
ThisForm.Label2.Caption = "Наименование материала"
ThisForm.Label3.Caption = "Ед. изм."
WITH ThisForm.text1 
	.Alignment =  1  
*!*		.ControlSource = ""
*!*		.ControlSource = 
	.Value = m.pcKmat
	.Format = "K"
	.InputMask = "999999"
	.ReadOnly = .F.
ENDWITH 
WITH ThisForm.text2 
	.Alignment =  0  
*!*		.ControlSource = ""
*!*		.ControlSource = 
	.Value = m.pcName
	.Format = "K" 
	.ReadOnly = .F.
ENDWITH 
WITH ThisForm.Combo1 
	.RowSource = ""
	.RowSourceType =  0  
	.RowSource = m.gaUnits
	.RowSourceType =  5  
	.ReadOnly = .F.
ENDWITH 
*!*	MESSAGEBOX(tcName)
Не ругается, но 2 TextBox пустой, хотя опять же параметр виден в Init'e и проблемму с видимостью в других методах решил B-D ....
Ни чё не понимаю! (с) Следствие ведут колобки...
...
Рейтинг: 0 / 0
30.05.2005, 11:05:11
    #33090139
-Moryachok-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Do Form MyForm With ...) Передача параметров в объекты
Предидущий пост не актуален ....
Сам накосячил, уже разобралсь...
спасибо to ВладимирМ
...
Рейтинг: 0 / 0
30.05.2005, 23:33:39
    #33091565
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Do Form MyForm With ...) Передача параметров в объекты
Hi -Moryachok-!

Проблема видимости для других МЕТОДОВ ФОРМЫ решается не созданием PUBLIC переменных, а созданием новых свойств у данного объекта - свойства можно создать как заранее (в конструкторе формы) и в Init только записать в них значения принятых параметров, так и непосредственно в Init - через This.AddProperty("имя_свойства", значение_свойства). Вот к таким свойствам уже можно привязывать контролы - только не забывая, что This в Init формы это для контрола будет ThisForm

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (Do Form MyForm With ...) Передача параметров в объекты / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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