powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как записать valid в init формы
14 сообщений из 14, страница 1 из 1
Как записать valid в init формы
    #37439520
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(VFP9, FormDesigner) Есть таблица (Т с полем П ), форма, созданный метод Ok (messagebox("Ok")) на ней грид и одна колонка, как бы в Grid.init, записать что-то типа this.column1.text1.valid=thisform.Ok, чтоб по выходу из колонки срабатывал этот метод...
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439532
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1,

А как же по Grid перемещаться кнопками? Постоянно будет выскакивать твой месседж
Valid требует RETURN .T. или .F.
А вообще-то есть еще у Grid свойство AfterRowColChange
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439536
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кратко, то читайте справку по

Grid.AftreRowColChange() или функции BindEvent(). В зависимости от того, что же вам надо на самом деле .

Если подробно, то надо начать с того, какую задачу Вы хотите решить. Пока Вы описали лишь способ, которым Вы хотите воспользоваться. Не самый лучший по многим причинам. А сделать-то Вы что хотите? Зачем Вам это все надо?
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439564
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть очень много столбцов, с одинаковой функцией проверки(суммирование умножение и т.д. по всем полям одной записи), конечно можно эту функцию(которая записана как метод в FormDesigner) прописывать в каждом столбике Text1, но хотелось бы чтоб не проставлять вручную этот метод в каждом столбике грида, а определять в цикле валид , каждого столбца, в инит грида
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439578
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Есть очень много столбцов, с одинаковой функцией проверки(суммирование умножение и т.д. по всем полям одной записи), конечно можно эту функцию(которая записана как метод в FormDesigner) прописывать в каждом столбике Text1, но хотелось бы чтоб не проставлять вручную этот метод в каждом столбике грида, а определять в цикле валид , каждого столбца, в инит грида

А не проще SELECT с вычисляемым полем? И огород городить не нужно.
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439595
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, для меня не проще..:-), мне больше нравятся index, set order, set key, unique и т.д., машины древние, пока этот select прокрутит, а так обратится к индексному файлу ...вроде быстрей...:-)
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439605
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и ещё они в каждом столбике проставляют количество часов, и в итоговом столбце должен получиться результат, так что Select всё равно не подходит...:-)
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439624
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблица включена в контейнер базы данных, то у нее можно прописать RULE уровня полей и уровня записи. Судя по описанию, указанному методу там самое место.

И еще, как мне кажется, делать проверку для каждого поля - бессмысленно. Особенно, если результат зависит от значения нескольких полей. Проверку надо делать при попытке выхода из записи. Когда значения всех полей уже сформированы.
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439626
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1да, и ещё они в каждом столбике проставляют количество часов, и в итоговом столбце должен получиться результат, так что Select всё равно не подходит...:-)

В SELECT можно и SUM() использовать
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37439658
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

У меня нет контейнера базы данных, таблицы free, она в стоббец внесла количество часов, должен показаться итог, если не подходит стереть, поставить в другом столбце, либо другое количество...
Как-то я пытаюсь обосновать, объяснить зачем мне это нужно...:-), но может просто скажете, как(если можно) ... а не для чего...:-), а то я уже склоняюсь к методу копи-паст, и заходить в каждый валид стобца и прописывать thisform.ok...:-)
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37440029
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1да, и ещё они в каждом столбике проставляют количество часов, и в итоговом столбце должен получиться результат
Для этого вообще никаких методов писать не надо. Достаточно сделать последний столбец вычисляемым полем. Например, указать

Код: plaintext
Column10.ControlSource = "tab.f1+tab.f2+tab.f3+tab.f4"

Для более сложных случаев, уже в самом начале написали "как". Написать один общий код в событиях Grid.BeforRowColChange()/Grid.AftreRowColChange(). В методе Before запоминаешь значение при входе, в методе Aftre смотришь, что на выходе. Если изменились, делаешь перерасчет или просто добавляешь/вычитаешь разницу к итогу.

Кроме перечисленных приемов можно еще создавать собственные классы, как для TextBox внутри Column, так и для собственно Column. Правда, вызывать из методов дочернего класса методы родительского класса - не очень хорошо. В VFP9 эти классы можно указать через свойство Grid.MemberClass
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37440031
SSn888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1,

(1) Повторю Владимира - AfterRowColChange()
внутри проверяйте свойство RowColChange (2=смена столбца)

(2) Если
q1w1e1Есть очень много столбцов, с одинаковой функцией проверки(суммирование умножение и т.д. по всем полям одной записи)
- то нужен ли тут художественный изврат? Ставьте в контролсурсе столбца саму формулу и все...
ThisForm.grd1.column2.ControlSource = "tbl1.fld1*tbl1.fld2...."
И в инит грида или всей формы добавьте чтоб у Вас несоответствующее условию (ну, типа результат меньше чего-то там или еще чего) выделялся динамически цветом али жирностью али еще как (см. доку по column.DynamicBackColor, да и вообще все column.Dynamic...)
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37440036
SSn888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
эээ...
как это мы ухитряемся в постоянно втречаться на одной волне? :) %)
привет Вам :)
...
Рейтинг: 0 / 0
Как записать valid в init формы
    #37440124
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы, наверное не стОит продолжать... просто несколько нюансов, в итоговом столбце, конечно сделан подсчёт(правда тоже через метод, т.к. строка длинная), почему нужна процедура... заполняя столбец по выходу, не только подсчитывается итог по всем столбцам в строке, но и по всем строкам данного объекта, после чего общий результат выводится в техтбокс внизу таблицы и курсор возращается на место...
почему не хочется помещать эту процедуру в AftreRowColChange, потому что это таблица на форме не одна, их несколько, поэтому эту процедуру, по выходу из каждой колонки , как я думал, записать в метод и уже при инициализации грида, по условию какая таблица, какая колонка, присваивать валид или нет... поэтому и спросил просто, можно или нет..., в итоге пришёл к AftreRowColChange каждой таблицы...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как записать valid в init формы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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