powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
4 сообщений из 4, страница 1 из 1
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
    #38927248
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй ночи!
Отображаю в гриде в одном столбце данные разных типов.
Источник данных - курсор 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
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
    #38927674
9IKOB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)
    #38927684
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheckBox может показывать как логическое (.T./.F.) так и числовое (0/1).
Для него без разницы, а в других местах кода будет ошибка несоответствия типов.

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

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

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

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


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