powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
11 сообщений из 11, страница 1 из 1
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508775
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT num,doc,delo,num_in_dp,KodDoc,rn FROM dp ORDER BY doc,num,num_in_dp INTO TABLE &CDP
ENDIF

this.Parent.grid3.RecordSourceType =1
this.Parent.grid3.RecordSource =CDP
this.Parent.grid3.column1.Width=30
this.Parent.grid3.column2.Width=300
this.Parent.grid3.column3.Width=100
this.Parent.grid3.column4.Width=30
this.Parent.grid3.Refresh

Т..е динамически изменяю таблицу и после этого хоть закликайся на строках грида, процедуры не вызываются. А при запуске - все нормально.
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508797
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грид реагирует, только по дефолту, а не как ты прописал, т.к. то что ты прописал удаляется при переоткрытии.
Попробуй в начало добавить (перед SELECT):
Код: plaintext
this.Parent.grid3.RecordSource =''

Если не поможет, то оборачивай свой select в курсорадаптер или LocalView, ставь в DE и делай им REQUERY() при необходимости.
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508811
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слишком разные условия в разных запросах и параметры запросов варьируются. Поэтому хочу понять, как можно перепривязать процедуры обработки событий к объектам обновленного грида
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508831
FAMслишком разные условия в разных запросах и параметры запросов варьируются. Поэтому хочу понять, как можно перепривязать процедуры обработки событий к объектам обновленного грида
Процедуры обработки привязываются или при разработке программы (раннее связывание) путем создания классов с соответствующей привязкой или уже во время работы программы (позднее связывание) путем использования функции BindEvent(). Наиболее предпочтительным является первый ваирант.
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508839
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда делать свой класс грида и свои классы его объектов и заменять на них.

Если набор полей в запросах и колонок грида постоянен, то как вариант предварительно создать пустой курсор и переливать в него результат SELECT`а каждый раз
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508864
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТогда делать свой класс грида и свои классы его объектов и заменять на них.

Если набор полей в запросах и колонок грида постоянен, то как вариант предварительно создать пустой курсор и переливать в него результат SELECT`а каждый раз

Пример можно?
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508906
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В DE.BeforeOpenTables() прописываешь
Код: plaintext
create cursor MyCursor (F1 c( 10 ), F2 I, F3 D)
В гриде в RecordSource ставишь "MyCursor", делаешь колонки, код свой прописываешь.

В процессе работы изменение начинки грида:
Код: plaintext
1.
2.
3.
4.
5.
6.
select F1, F2, F3 from ... where ... into cursor TmpCur
sele MyCursor
delete all
append from (dbf('TmpCur'))
use in TmpCur
go top in MyCursor
...Grid.Refresh()

Только в курсоре с каждым запросом кол-во записей будет все больше, т.к. старые останутся помеченные на удаление. Это можно обойти сделав RECALL ALL in MyCursor, затем записать из TmpCur поверх имеющихся, не хватит записей - добавить, останутся лишние - пометить на удаление.
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508917
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример того как на основании View формируется CROS-таблица и динамически меняется grid
Код: 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.
This.parent.Grid1.RECORDSOURCE=""
TIPR= 0 
REQUERY("RASCETV")
SELECT ID_ZIL,ID_USL,SUM(SUMA) AS SUMA FROM RASCETV WHERE suma#  0  GROUP BY  1 , 2  INTO CURSOR CRAS
IF _TALLY= 0 
	RETURN
ENDIF

lcxtabfile = IIF(EMPTY(_GENXTAB),"vfpxtab.prg",_GENXTAB)
oNewXtab=NEWOBJECT('genxtab',lcxtabfile,"",'SAXR',.T.,.T.,.T., 1 , 2 , 3 ,.T., 0 )
oNewXtab.MakeXtab()


ZAPR="SELECT SAXR.ID_ZIL,SP_ZIL.FIO,SP_ZIL.KF,SP_KOM.N_KOM"
ZAPR2=" FROM SAXR,SP_ZIL,SP_KOM WHERE SP_ZIL.ID_ZIL=SAXR.ID_ZIL AND SP_KOM.ID_KOM=SP_ZIL.ID_KOM ORDER BY 2 INTO CURSOR SAXM"
* вспомогат курсор 
 SELECT "N_"+PADR(ID_USL, 3 ) AS KODN,NAMK FROM SP_USL ;
 UNION SELECT DISTINCT "TOTAL" AS KODN,PADR("ВСЕГO", 20 ) AS NAMK FROM SP_USL INTO CURSOR CUSL
SELECT SAXR
KPL=FCOUNT()
SELECT CUSL
FOR I= 2  TO KPL
	POL=PADR(FIELD(I,"SAXR"), 5 )
	NAMP=CHRTRAN(RTRIM(LOOKUP(NAMK,M.POL,KODN))," ","_")
	ZAPR=ZAPR+","+RTRIM(FIELD(I,"SAXR"))+" AS "+NAMP
ENDFOR
ZAPR=ZAPR+ZAPR2
&ZAPR
SELECT SAXM
KPL=FCOUNT()
WITH This.parent.Grid1
	.COLUMNCOUNT=KPL
	.COLUMNS( 1 ).HEADER1.CAPTION="Ид.№ жильц"
	.COLUMNS( 1 ).Width =  30 
	.COLUMNS( 1 ).CONTROLSOURCE="SAXM.ID_ZIL"
	.COLUMNS( 1 ).TEXT1.CONTROLSOURCE="SAXM.ID_ZIL"
	.COLUMNS( 1 ).ENABLED=.F.
	.COLUMNS( 1 ).HEADER1.WORDWRAP=.T.
	.COLUMNS( 1 ).HEADER1.ALIGNMENT= 2 
	.COLUMNS( 2 ).HEADER1.CAPTION="ФИО жильца"
	.COLUMNS( 2 ).Width =  100 
	.COLUMNS( 2 ).CONTROLSOURCE="SAXM.FIO"
	.COLUMNS( 2 ).TEXT1.CONTROLSOURCE="SAXM.FIO"
	.COLUMNS( 2 ).ENABLED=.F.
	.COLUMNS( 2 ).HEADER1.WORDWRAP=.T.
	.COLUMNS( 2 ).HEADER1.ALIGNMENT= 2 
	.COLUMNS( 3 ).HEADER1.CAPTION="Коэфф."
	.COLUMNS( 3 ).Width =  30 
	.COLUMNS( 3 ).CONTROLSOURCE="SAXM.kf"
	.COLUMNS( 3 ).TEXT1.CONTROLSOURCE="SAXM.KF"
	.COLUMNS( 3 ).ENABLED=.F.
	.COLUMNS( 3 ).HEADER1.WORDWRAP=.T.
	.COLUMNS( 3 ).HEADER1.ALIGNMENT= 2 
	.COLUMNS( 4 ).HEADER1.CAPTION="№ комн."
	.COLUMNS( 4 ).Width =  30 
	.COLUMNS( 4 ).CONTROLSOURCE="SAXM.N_KOM"
	.COLUMNS( 4 ).TEXT1.CONTROLSOURCE="SAXM.N_KOM"
	.COLUMNS( 4 ).ENABLED=.F.
	.COLUMNS( 4 ).HEADER1.WORDWRAP=.T.
	.COLUMNS( 4 ).HEADER1.ALIGNMENT= 2 

	FOR I= 5  TO KPL
		NGR=RTRIM(FIELD(I))
		CNGR="SAXM."+NGR
		*NGR=RIGHT(NGR,LEN(NGR)- 2 )
		*RAS_ID=VAL(NGR)
		*SELE SP_RAS 
		*NAMGR=rtrim(LOOKUP(NAIM,RAS_ID,ID_RAS,"ID_RAS"))
		NAMGR=NGR
		DL=LEN(NAMGR)
		.COLUMNS(I).HEADER1.CAPTION=LOWER(NAMGR)
		.COLUMNS(I).InputMask = "9999999"
		.COLUMNS(I).Width = MAX( 47 ,MIN( 95 ,INT( 134 *DL/ 20 )))
		.COLUMNS(I).TEXT1.InputMask = "9999999"
		.COLUMNS(I).HEADER1.backcolor = RGB( 128 , 255 , 255 )
		.COLUMNS(I).CONTROLSOURCE=CNGR
		.COLUMNS(I).TEXT1.CONTROLSOURCE=CNGR
		.COLUMNS(I).ENABLED=.F.
		.COLUMNS(I).HEADER1.WORDWRAP=.T.
		.COLUMNS(I).HEADER1.ALIGNMENT= 2 

	ENDFOR

	.RECORDSOURCE="SAXM"
	SELE SAXM
	go top
	.REFRESH
ENDWITH	

...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508918
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, это уже решение, поробую! Тем более что к-во записей не очень критично, выборки небольшие
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35508920
Samvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaT подсказал правильно:

Код: plaintext
1.
2.
this.Parent.grid3.RecordSource =''
SELECT num,doc,delo,num_in_dp,KodDoc,rn FROM dp ORDER BY doc,num,num_in_dp INTO TABLE &CDP
this.Parent.grid3.RecordSource=CDP
А этот кусок убрать в INIT формы, предварительно создав пустой курсор.

Код: plaintext
1.
2.
3.
4.
5.
6.
this.Parent.grid3.RecordSourceType = 1 
this.Parent.grid3.RecordSource =CDP
this.Parent.grid3.column1.Width= 30 
this.Parent.grid3.column2.Width= 300 
this.Parent.grid3.column3.Width= 100 
this.Parent.grid3.column4.Width= 30 
this.Parent.grid3.Refresh

Тогда все интрукции сохранятся. А если в результате запроса ты получаешь разные курсоры по структуре, то тогда надо знать какие процедуры обработки должны сохранятся.
...
Рейтинг: 0 / 0
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
    #35509526
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Samvel
А если в результате запроса ты получаешь разные курсоры по структуре, то тогда надо знать какие процедуры обработки должны сохранятся.

Мне например сохранить бы любую процедуру любого события, а уж по аналогии я разберусь и с остальными.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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