Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с BindEvent и Grid / 6 сообщений из 6, страница 1 из 1
06.04.2006, 13:21
    #33648852
Роман Новичек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
Привет всем
VFP 8 SP1
Есть форма на ней грид с кучей колонок (34). Так вот хочу в TextBox-ах колонок грида события Valid и When перекрыть своими методами с помощью BindEvent. Все хорошо, только почему-то перекрывается только на первой колонке, а в остальных просто игнор какой-то. Вот код перекрытия:
WITH THIS.GrdZkz1
FOR EACH lObj IN .COLUMNS
IF lObj.CURRENTCONTROL='Text1'
BINDEVENT(lObj.Text1, "When", THISFORMSET, "WhenEditVal")
BINDEVENT(lObj.Text1, "Valid", THISFORMSET, "ValidEditVal")
ENDIF
ENDFOR
ENDWITH
Код этот работает в Init грида.
Что за ересь, не пойму.
...
Рейтинг: 0 / 0
06.04.2006, 13:42
    #33648941
Роман Новичек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
Немного поэксперементировав обнаружил, что в той колонке где все удачно перекрывались Valid и When в них был код, а в остальных пусто.
Как только я сделал во всех Text-ах всех колонок в Valid и When пусто, то вообще ничего не перекрывается. Что за глюк?
...
Рейтинг: 0 / 0
06.04.2006, 14:01
    #33649016
Роман Новичек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
BindEvent корявая фишка. Прописал в текстах колонок DODEFAULT все стало работать. Лучше бы я класс создал, только уже времени нет
...
Рейтинг: 0 / 0
07.04.2006, 21:34
    #33653418
Jurisfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
авторНемного поэксперементировав обнаружил, что в той колонке где все удачно перекрывались Valid и When в них был код, а в остальных пусто.

Это не глюк - об этом явно прописано в справке.

Certain control events such as GotFocus, LostFocus, InteractiveChange, and ProgrammaticChange do not work if the second bit of the nFlags parameter is set, for example, nFlags set to 2. These events are treated as method calls internally by Visual FoxPro, even though they are considered events. The same behavior applies to the Refresh method of an object on a form that is called when the form's Refresh method is called. Certain events such as When and Valid require code in the event for it to occur.

BINDEVENT( ) does not directly support the Value property because it is handled by Visual FoxPro in a special way. You should use the InteractiveChange and ProgrammaticChange events instead. Additionally, the ActivePage property is not supported.



Никогда не говори "невозможно", просто попробуй сделать иначе!
JS (at FoxClub)
...
Рейтинг: 0 / 0
08.04.2006, 20:58
    #33653972
serg_piter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
На твоем месте я бы написал класс столбца с твоими методами WHEN и Valid в .PRG и в гриде указал бы этот класс и .PRG файл в свойствах MemberClass и MemberClassLibrary.
Получится быстро и без проблем.
DEFINE CLASS MYCOLUMN AS COLUMN
PROCEDURE When
...
ENDPROC
PROCEDURE Valid
...
ENDPROC
ENDDEFINE
...
Рейтинг: 0 / 0
09.04.2006, 18:10
    #33654439
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с BindEvent и Grid
Hi serg_piter!

> На твоем месте я бы написал класс столбца с твоими методами WHEN и Valid

Не совсем так - не в методах колонки (таковых кстати у неё и нету), а в
методах контролов, в этой колонке расположенных. Т.е. например так:

> DEFINE CLASS MYCOLUMN AS COLUMN

ADD OBJECT txt AS MyColumnTextbox

ENDDEFINE
DEFINE CLASS MyColumnTextbox AS Textbox

> PROCEDURE When
> ...
> ENDPROC
> PROCEDURE Valid
> ...
> ENDPROC
> ENDDEFINE

Можно так-же и хедер описать - причём 2-мя способами :) Явно по ADD OBJECT
или косвенно через HeaderClass(Library)
А можно пойти проще - заменив только текстбоксы в колонке - причём сделать
это можно как в рантайме (циклом подобным описанному в начале темы) - но
тогда все свойства, а главное методы описанные в имеющихся в колонках
текстбоксах (т.е. в "штатных") будут утеряны... Так и в дизайнтайме (т.е. в
редакторе формы/класса) - конечно менять руками контролы в 34 колонках есть
малопродуктивно - поэтому есть смысл написать простой построитель, который и
сделает подобную замену :) Или же "обмануть" фокс, открыв scx/vcx как
таблицу и проведя замену полей Class и Classloc для нужных записей
(ориентируясь по содержимому полей Parent, текущим значениям поля Class и
т.п.)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с BindEvent и Grid / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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