powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ComboBox и фильтр
4 сообщений из 4, страница 1 из 1
ComboBox и фильтр
    #33581197
TaniaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажи пожалуйста, у меня есть TextBox в который из спарвочника(отдельная форма) выбирается вид оборудования. И есть Combo в котором, в зависимости от выбранного вида, нужно отобразить подвиды.
Т.е. - выбираем вид, и тутже может выбрать подвид из небольшого списка. В базе подвидов коды подвидов равным тем видам, к которым они принадлежат.
Скажите как можно сделать вишеописанную связь? Кто-нибудь с подобным сталкивался?
...
Рейтинг: 0 / 0
ComboBox и фильтр
    #33581280
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 TaniaM

Вот один вариант. В Клике текстбокса пропиши код создания массива или курсора. Ну допустим курсора. Далее пишешь
Thisform.combo1.rowsourcetype = 2
Thisform.combo1.displayvalue = ""
Thisform.combo1.rowsource = имя_курсора.имя_поля_которое_нужно_показать

и все. С курсором есть один "+". Ты можешь в него загнать скока хочешь паралельных полей и показывать в комбо тот который требуеться. При выборе из комбо какого нить значения курсор в курсоре автоматически переходит на ту строку где выбранное значение находиться. => если нужны значения принадлежащие выбранному значению в курсоре, ты можешь их легко достать, т.е. имя_курсора.имя_паралельного поля.
...
Рейтинг: 0 / 0
ComboBox и фильтр
    #33582029
TaniaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно ли как-то проработать такой вариант - в зависимости от выбр. вида база подвидов фильтруется и показывает в Combo только те подвиды, коды которых соответствуют коду выбр. вида.
Хотя я так пробовала, но ведь база отфильтровывается полностью, и при дальшейшем её перелистывании (в осн. форме) в окошке "Подвиды" соответственно выствечиваются только те, что отфильтровались. И им уже неважно какой там вид стоит в TextBox. Постоянну привязку что ли делать,или проверку при изменении информациии...Брр, что-то я запуталась.:(
...
Рейтинг: 0 / 0
ComboBox и фильтр
    #33582104
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, TaniaM !
Проанализируй пример, если заинтересует (написано на VFP80):
Код: 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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
LOCAL f_spr as Form
f_spr = CREATEOBJECT("w_spr")
f_spr.Show( 1 )

DEFINE CLASS w_spr AS form

	Height =  77 
	Width =  500 
	DoCreate = .T.
	AutoCenter = .T.
	Caption = "Справичники"
	Name = "W_spr"

	ADD OBJECT cmb_pvid AS combobox WITH ;
		RowSourceType =  6 , ;
		Height =  24 , ;
		Left =  264 , ;
		Style =  2 , ;
		TabIndex =  2 , ;
		Top =  32 , ;
		Width =  204 , ;
		Name = "Cmb_pvid"

	ADD OBJECT cmb_vid AS combobox WITH ;
		ColumnCount =  0 , ;
		ColumnWidths = "", ;
		RowSourceType =  6 , ;
		RowSource = "Q_vid.name_vid", ;
		FirstElement =  1 , ;
		Height =  24 , ;
		Left =  36 , ;
		NumberOfElements =  0 , ;
		Style =  2 , ;
		TabIndex =  1 , ;
		Top =  32 , ;
		Width =  204 , ;
		Name = "Cmb_vid"

	ADD OBJECT label1 AS label WITH ;
		Caption = "Справочник видов", ;
		Height =  17 , ;
		Left =  36 , ;
		Top =  12 , ;
		Width =  107 , ;
		Name = "Label1"

	ADD OBJECT label2 AS label WITH ;
		Caption = "Справочник подвидов", ;
		Height =  17 , ;
		Left =  264 , ;
		Top =  12 , ;
		Width =  128 , ;
		Name = "Label2"

	PROCEDURE create_cur
		LPARAMETERS i
		THIS.Cmb_pvid.RowSource = ""
		THIS.Cmb_pvid.Value = ""

		SELECT * FROM Q_pvid WHERE Q_pvid.id_vid = i ;
		  ORDER BY Q_pvid.name_pvid INTO CURSOR C_pvid

		THIS.Cmb_pvid.RowSource = "C_pvid.name_pvid"
		THIS.Cmb_pvid.Requery()
		IF !EOF('C_pvid')
		  THIS.Cmb_pvid.Enabled = .T.
		  THIS.Cmb_pvid.Value = C_pvid.name_pvid
		ELSE
		  THIS.Cmb_pvid.Enabled = .F.
		  THIS.Cmb_pvid.Value = ""
		ENDIF
	ENDPROC

	PROCEDURE Unload
		CLOSE TABLES ALL
	ENDPROC

	PROCEDURE Init
		THIS.Create_cur(Q_vid.id_vid)
	ENDPROC

	PROCEDURE Load
		CLOSE TABLES ALL
		CREATE CURSOR Q_vid (id_vid I, name_vid C( 30 ))
		FOR i= 1  TO  10 
		  INSERT INTO Q_vid (id_vid, name_vid) VALUES (i, "Вид оборудования "+STR(i, 2 ))
		ENDFOR
		GO TOP IN Q_vid

		CREATE CURSOR Q_pvid (id_pvid I, id_vid I, name_pvid C( 30 ))
		k =  0 
		FOR i= 1  TO  9 
		  FOR j= 1  TO  10 -i
		    k = k +  1 
		    INSERT INTO Q_pvid (id_pvid, id_vid, name_pvid) VALUES (k, i, "Подвид оборудования "+STR(i, 1 )+STR(j, 1 ))
		  ENDFOR
		ENDFOR
		GO TOP IN Q_pvid
	ENDPROC

	PROCEDURE cmb_vid.InteractiveChange
		THISFORM.Create_cur(Q_vid.id_vid)
	ENDPROC

	PROCEDURE cmb_vid.Init
		IF !EOF('Q_vid')
		  THIS.Value = Q_vid.name_vid
		ENDIF
	ENDPROC

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


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