Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid+разные типы источников данных в одном столбце (DynamicCurrentControl) / 4 сообщений из 4, страница 1 из 1
05.04.2015, 02:00
    #38927248
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
Доброй ночи!
Отображаю в гриде в одном столбце данные разных типов.
Источник данных - курсор c_att_objects2 (получаемый из курсорадаптера)

Поскольку хранить данные разных типов в одном столбце нельзя - храню их в разных.
И меняю в DynamicCurrentControl столбца источник CurrentControl и ControlSource.

c_att_objects2.att_def_c -- Символьный
c_att_objects2.att_def_d -- Дата
c_att_objects2.att_def_n -- Числовой
c_att_objects2.att_def_l -- Логический

В Ините формы:

Код: sql
1.
thisform.grdMain.column8.DynamicCurrentControl = 

"ThisForm.TextDef(c_att_objects2.att_data_type_fox)"

Где att_data_type_fox: C,D,N,L

ThisForm.TextDef

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
LPARAMETERS tcCurrentControl

this.grdMain.Column8.CurrentControl = IIF(INLIST(tcCurrentControl,'C','D','N','L'),;
ICASE(tcCurrentControl = 'C','Text1',;
tcCurrentControl = 'D','Text2',;
tcCurrentControl = 'N','Text3',;
tcCurrentControl = 'L','Check1'),;
'Text1') 

	DO CASE
		CASE this.grdMain.Column8.CurrentControl = 'Text1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_c'

		CASE this.grdMain.Column8.CurrentControl = 'Text2'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_d'

		CASE this.grdMain.Column8.CurrentControl = 'Text3'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_n'

		CASE this.grdMain.Column8.CurrentControl = 'Check1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_l'
	ENDCASE
RETURN (m.tcCurrentControl)



Text1.Value = ""
Text2.Value = {}
Text3.Value = 0.00
Check1.Value = 0

Все 4 встроены в столбец грида

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

Не хотят они в паре работать.
При добавлении в c_att_objects2 через APPEND BLANK
Ругается на Check1 - ошибочный тип данных и все, привет.
От Dynamic остается одно воспоминание.

Причем сразу после APPEND я делаю.

Код: sql
1.
replace att_data_type_fox WITH 'C',att_def_c WITH "",att_def_d WITH {},att_def_n WITH 0.00,att_def_l WITH 0



Такое ощущение, что DynamicCurrentControl отрабатывает сразу после APPEND.
Но тогда почему все в порядке с Text1? Поставил Text вместо Check1 - работает.
Но хочется видеть не 0 или 1 в столбце, а галочку.

Заранее спасибо.
...
Рейтинг: 0 / 0
06.04.2015, 08:01
    #38927674
9IKOB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
miv32,

В коде ошибка - в поле логического типа можно записывать только значения .T. или .F.
Код: sql
1.
replace att_data_type_fox WITH 'C',att_def_c WITH "",att_def_d WITH {},att_def_n WITH 0.00,att_def_l WITH 0


Правильный вариант:
Код: sql
1.
replace att_data_type_fox WITH 'C',att_def_c WITH "",att_def_d WITH {},att_def_n WITH 0.00,att_def_l WITH .F.
...
Рейтинг: 0 / 0
06.04.2015, 08:19
    #38927684
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
CheckBox может показывать как логическое (.T./.F.) так и числовое (0/1).
Для него без разницы, а в других местах кода будет ошибка несоответствия типов.

PS Тут DynamicCurrentControl вообще не нужен. Тип поля во время работы грида не меняется. Достаточно при создании грида в соответствии с типом подставить нужный контрол. И три TextBox не надо, настрой имеющийся под нужный тип данных.
...
Рейтинг: 0 / 0
06.04.2015, 08:58
    #38927693
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
Ошибок тут нет.

Вот и задача в этом - в одном столбце показать РАЗНЫЕ типы данных.
Собственно, я поборол.

Чекбокс поместил в контейнер.

Код: sql
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.
LPARAMETERS tcCurrentControl,tcCurrentControlEnabled

this.grdMain.Column8.CurrentControl = ''
this.grdMain.Column8.ControlSource = ''

this.grdMain.Column8.CurrentControl = IIF(INLIST(tcCurrentControl,'C','D','N','L'),;
ICASE(tcCurrentControl = 'C','Text1',;
tcCurrentControl = 'D','Text2',;
tcCurrentControl = 'N','Text3',;
tcCurrentControl = 'L','Ocontgrid'),;
'Text1') 

	DO CASE
		CASE this.grdMain.Column8.CurrentControl = 'Text1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_c'

		CASE this.grdMain.Column8.CurrentControl = 'Text2'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_d'

		CASE this.grdMain.Column8.CurrentControl = 'Text3'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_n'

		CASE this.grdMain.Column8.CurrentControl = 'Ocontgrid'
				this.grdMain.Column8.Ocontgrid.check1.ControlSource = 'c_att_objects2.att_def_l'

	ENDCASE
RETURN (m.tcCurrentControl)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid+разные типы источников данных в одном столбце (DynamicCurrentControl) / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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