Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ / 11 сообщений из 11, страница 1 из 1
27.08.2008, 15:05
    #35508775
FAM
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
27.08.2008, 15:12
    #35508797
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
Грид реагирует, только по дефолту, а не как ты прописал, т.к. то что ты прописал удаляется при переоткрытии.
Попробуй в начало добавить (перед SELECT):
Код: plaintext
this.Parent.grid3.RecordSource =''

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

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

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

Пример можно?
...
Рейтинг: 0 / 0
27.08.2008, 15:41
    #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
27.08.2008, 15:44
    #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
27.08.2008, 15:44
    #35508918
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
Спасибо, это уже решение, поробую! Тем более что к-во записей не очень критично, выборки небольшие
...
Рейтинг: 0 / 0
27.08.2008, 15:45
    #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
27.08.2008, 18:59
    #35509526
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ГРИД НЕ РЕАГИРУЕТ НА СОБЫТИЯ
Samvel
А если в результате запроса ты получаешь разные курсоры по структуре, то тогда надо знать какие процедуры обработки должны сохранятся.

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


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