powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с BindEvent и Grid
6 сообщений из 6, страница 1 из 1
Проблема с BindEvent и Grid
    #33648852
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем
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
Проблема с BindEvent и Grid
    #33648941
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного поэксперементировав обнаружил, что в той колонке где все удачно перекрывались Valid и When в них был код, а в остальных пусто.
Как только я сделал во всех Text-ах всех колонок в Valid и When пусто, то вообще ничего не перекрывается. Что за глюк?
...
Рейтинг: 0 / 0
Проблема с BindEvent и Grid
    #33649016
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BindEvent корявая фишка. Прописал в текстах колонок DODEFAULT все стало работать. Лучше бы я класс создал, только уже времени нет
...
Рейтинг: 0 / 0
Проблема с BindEvent и Grid
    #33653418
Jurisfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНемного поэксперементировав обнаружил, что в той колонке где все удачно перекрывались 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
Проблема с BindEvent и Grid
    #33653972
serg_piter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На твоем месте я бы написал класс столбца с твоими методами WHEN и Valid в .PRG и в гриде указал бы этот класс и .PRG файл в свойствах MemberClass и MemberClassLibrary.
Получится быстро и без проблем.
DEFINE CLASS MYCOLUMN AS COLUMN
PROCEDURE When
...
ENDPROC
PROCEDURE Valid
...
ENDPROC
ENDDEFINE
...
Рейтинг: 0 / 0
Проблема с BindEvent и Grid
    #33654439
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с BindEvent и Grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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