Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / отседить событие изменения checkbox-а в grid / 12 сообщений из 12, страница 1 из 1
06.11.2008, 14:15
    #35637625
beginner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
День добрый!

Имеется грид со встроенным checkbox.
Какое событие происходит при щелчке по любому из cheсbox-ов в гриде?
Стоит задача по обновлению одно из свойств в форме при таком событии.
VFP9
...
Рейтинг: 0 / 0
06.11.2008, 14:34
    #35637697
54321тут
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
InteractiveChange
...
Рейтинг: 0 / 0
06.11.2008, 14:41
    #35637724
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
54321тутInteractiveChange
У меня что-то не очень хорошо работало с InteractiveChange, когда checkbox в колонке грида, но нормально работает Click() на checkbox.
С уважением, Алексей
...
Рейтинг: 0 / 0
06.11.2008, 14:55
    #35637754
homik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в 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.
myFrm=Createobject("My_Form")
myFrm.Show( 1 )
WAIT CLEAR 
**
Define Class My_Form As Form
	Procedure Init
		Create Cursor tmp(fld_char c( 10 ),fld_log L)
		Insert Into tmp(fld_char,fld_log) Values("aaaaa",.T.)
		Insert Into tmp(fld_char,fld_log) Values("bbbbb",.F.)

		This.AddObject("MyGrd","Grid")
		This.MyGrd.ColumnCount= 1 
		This.MyGrd.AddObject('my_Col2','my_Column')
		This.MyGrd.Visible=.T.

		This.MyGrd.RecordSource="tmp"
		This.MyGrd.RecordSourceType= 1 

	Endproc

Enddefine
**
Define Class my_Column As Column
	Sparse=.F.
	Visible = .T.
	Procedure Init
		This.RemoveObject('Text1')
		This.AddObject('MyChk1','My_Checkbox')
	Endproc

Enddefine
**
Define Class My_Checkbox As Checkbox
	Procedure interactivechange
		Wait Window Transform(This.Value) NOWAIT NOCLEAR 
	Endproc
ENDDEFINE
...
Рейтинг: 0 / 0
06.11.2008, 16:58
    #35638235
beginner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
homik
Код: 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.
myFrm=Createobject("My_Form")
myFrm.Show( 1 )
WAIT CLEAR 
**
Define Class My_Form As Form
	Procedure Init
		Create Cursor tmp(fld_char c( 10 ),fld_log L)
		Insert Into tmp(fld_char,fld_log) Values("aaaaa",.T.)
		Insert Into tmp(fld_char,fld_log) Values("bbbbb",.F.)

		This.AddObject("MyGrd","Grid")
		This.MyGrd.ColumnCount= 1 
		This.MyGrd.AddObject('my_Col2','my_Column')
		This.MyGrd.Visible=.T.

		This.MyGrd.RecordSource="tmp"
		This.MyGrd.RecordSourceType= 1 

	Endproc

Enddefine
**
Define Class my_Column As Column
	Sparse=.F.
	Visible = .T.
	Procedure Init
		This.RemoveObject('Text1')
		This.AddObject('MyChk1','My_Checkbox')
	Endproc

Enddefine
**
Define Class My_Checkbox As Checkbox
	Procedure interactivechange
		Wait Window Transform(This.Value) NOWAIT NOCLEAR 
	Endproc
ENDDEFINE

Спасибо!
"Лучше один раз увидеть-чем сто раз услышать" :-))
...
Рейтинг: 0 / 0
06.11.2008, 17:18
    #35638310
beginner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
Добавил класс My_checkbox к проекту:
Из события interactivechange этго класса вызываю событие основной формы
my_form.command4.click
но событие в основной форме не срабатывает.
Протой messagebox()-вызываемый из interactivechange-работает.
...
Рейтинг: 0 / 0
06.11.2008, 17:47
    #35638398
BRROE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
Вместо my_form.command4.click
ThisForm.command4.click
...
Рейтинг: 0 / 0
06.11.2008, 18:34
    #35638525
BRROE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
Из события interactivechange этго класса вызываю событие основной формы
my_form.command4.click

my_form.command4.click - не событие формы, а событие обьекта КНОПКИ command4 ЭТОЙ формы

Прописывать кучу кода в Кнопка.Клик не есть гуд
Тем более что вызов идет из РАЗНЫХ мест.
Будет ПРИНЦИПИАЛЬНО правильнее создать метод в форме и потом вызывать его хоть из кнопки хоть из шекбокса грида.

Странно что my_form.command4.click не вызвало явной ошибки

Совет: Создать метод формы (для примеру SuperDeystvie), записать в нем желаемое поведение.

Код кнопки command4.click
ThisForm.SuperDeystvie()

Код My_checkbox.interactivechange() АБСОЛЮТНО такой же:
ThisForm.SuperDeystvie()

Преимущество очевидное - легкость модефикации!
...
Рейтинг: 0 / 0
07.11.2008, 09:38
    #35639160
beginner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
BRROE
Будет ПРИНЦИПИАЛЬНО правильнее создать метод в форме и потом вызывать его хоть из кнопки хоть из шекбокса грида.
Совет: Создать метод формы (для примеру SuperDeystvie), записать в нем желаемое поведение.

Спасибо!
А как создать метод в форме в визуальной среде проекта?
ThisForm.command4.click -тоже не помогает ...
...
Рейтинг: 0 / 0
07.11.2008, 10:04
    #35639226
homik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
...
Рейтинг: 0 / 0
07.11.2008, 10:37
    #35639345
beginner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
homik
Спасибо! Метод добавить получилось.
При щелкании по checkbox должно меняться значение stats на 0 или 1.
Событие срабатывает, но есть странность поведения:
Когда подряд щелкаешь по одному и тому-же checkbox-у то значение в messagebox не пересчитывается- а показывает последнее предустановленное.
А по кнопке запускающей эту-же процедуру-пересчитывается.
Т.е. если снять флажок с checkbox-а и после нажать на кнопку( command4.Click ) запускающую эту-же процедуру( proc_sumab )-то потом при снятии/помечании checkbox-а значение в messagebox последнее и не прересчитывается при изменении того-же checkbox-а ...
Код: plaintext
1.
2.
3.
PROCEDURE proc_sumab
	SELECT NVL(SUM(abplt), 0 ) sumab FROM c_ab WHERE stats= 1  INTO CURSOR c_ab_result
	mesaagebox(CAST(c_ab_result.sumab as varchar( 20 )))
ENDPROC
Код: plaintext
1.
2.
PROCEDURE command4.Click
	thisform.proc_sumab() 
ENDPROC
...
Рейтинг: 0 / 0
07.11.2008, 13:17
    #35639905
begenner_foxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отседить событие изменения checkbox-а в grid
Разобрался.
Всем спасибо!
Была проблема между взаимодействием события по checkbox-а и курсором.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / отседить событие изменения checkbox-а в grid / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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