Ячейка грида недовалидирована | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Ячейка в нижнем гриде, числовая, например.
Ввожу значение не до конца и не нажимаю Enter, и не перехожу в другую ячейку грида! И нажимаю кнопку - вставить строку в верхнем, например. Просто, уйти с грида. Ну, не я, а Юзер! Я привык, что мне это не мешает. Но тут 2 грида и много кнопок со своими кодами - методами. В результате получаю не то, на что расчитывал. Как мне заставить эту ячейку провалидировать? Вряд ли мне тут помогут сейчас! А вдруг! Свою проблему решил по-месту, частным образом. Не универсально, как тут в этом вопросе. Исправлено 2 раз(а). Последнее : Ydin, 09.05.23 13:01 |
Re: Ячейка грида недовалидирована | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Саша, не очень понятно про «провалидировать», … если это сделать проверку, то я обычно писал правило поля/записи.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Ячейка грида недовалидирована | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Пишем в ячейку (пусть в числовую) и нажимаем Энтер или переходим по гриду в др. ячейку.
И в ячейке валидированное значение после этого. А до этого невалидированное |
Re: Ячейка грида недовалидирована | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Ну, правило записи/ поля, причем независимо от того нажал Enter или нет, так же не зависит от поведения контролов, данные управляют данными.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Ячейка грида недовалидирована | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Да! Тут именно о контролах, у кот. есть метод VALID. Textbox такой!
Надо недоввести значение в ячейке Грида до конца и каким-то способом - вызовом прервать - Ячейка грида недовалидирована Пива и еще из гвардии, может, проходили. Не та уже ярмарка Не та уже сорочинская ярмарка - Гоголь Исправлено 3 раз(а). Последнее : Ydin, 09.05.23 15:58 |
Re: Ячейка грида недовалидирована | |
---|---|
Burn Сообщений: 5643 Откуда: Днепр Дата регистрации: 02.01.2002 |
LostFocus ведь отрабатывает. Вот в нем и попытаться явно заставить выполниться Valid
|
Re: Ячейка грида недовалидирована | |
---|---|
akvvohinc Сообщений: 4213 Откуда: Москва Дата регистрации: 11.11.2008 |
Доввели или недоввели значение в ячейку, значения не имеет - метод Valid ячейки выполняется в обоих случаях, если ячейка теряет фокус. Так что проблема может быть в коде этого метода, который я не вижу, а поэтому и ответить на вопрос темы не могу. Но что мешает пройти метод Valid в дебаггере для этого случая? Тут важно, происходит ли при таком "прерывании" потеря ячейкой фокуса или нет. Если юзер просто щелкнет мышкой на каком-то другом доступном объекте формы, то фокус ячейкой будет потерян, а Valid выполнится. Исправлено 3 раз(а). Последнее : akvvohinc, 09.05.23 18:08 |
Re: Ячейка грида недовалидирована | |
---|---|
akvvohinc Сообщений: 4213 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:И Valid выполняется при потере фокуса, причем, Valid раньше, чем LostFocus. Но Саша и не писал, что Valid не выполняется (это легко проверить), он сообщил, что значение не валидируется, а это не одно и то же. |
Re: Ячейка грида недовалидирована | |
---|---|
Vedmak Сообщений: 5966 Откуда: CiTY Дата регистрации: 30.10.2003 |
Формально надо рассматривать не ячейку грида, а дочерний объект который указан в CurrentControl (их может быть несколько). Вот в его Valid и проводите все валидации и возвращайте 0 если не прошла и надо там остаться.
В приложении базовый класс который я использую для полей с датами. Если веденное значение не проходит проверку то текущий Control на форме не изменяется И да, это работает для Control на форме вне зависимости от их привязки к "родителю". ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 5 раз(а). Последнее : Vedmak, 10.05.23 00:21 |
Re: Ячейка грида недовалидирована | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Форма с 2 гридами стандартная для Фреймворка, на ней еще кнопки вставки новой записи.
В нижнем гриде меняется значение поля с 5-ю дес. знаками и по выходу из ячейки пересчет сумм для верхнего грида. Юзер вводит пару десятичных знаков (ему больше не надо) и нажимает на кнопку вставки И сумма попадает в новую строку, которая еще не имеет дочерних строк. Те, кто до вставки нажимает Enter, получают нормальный результат. Работая с Фреймворком мы ограничены по возможностям, многое за кадром. Я провозился целый день, чтобы не меняя Фрейм, решить эту проблему. У меня такое условие - не трогать Фрейм. Рассылка новой версии нежелательна. Короче, пришлось его менять. В свойстве кнопки вставки добавил свойство OldRecno - номер строки, с кот. уходим в новую. И тогда проблема решается. Но ощущение того, что сделано не универсально. Кто-то из разработчиков тоже напорется. Случай не такой уж редкий Исправлено 1 раз(а). Последнее : Ydin, 10.05.23 09:25 |
Re: Ячейка грида недовалидирована | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Значит при потери фокуса "ячейкой грида" её Control.Value не сбрасывается в ControlSource, что маловероятно, либо стоит 3,5 буфферизация на нижнем курсоре, а верхний вычисляется без with (buffering = .t.)
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Ячейка грида недовалидирована | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
С самой ячейкой в нижнем гриде все нормально. Только ее валидация происходит, когда в верхнем гриде уже новая строка.
Фреймворку больше 20 лет. И вот первый раз эта проблема нарисовалась. Вот не хочет кто-то нажимать Enter... В принципе, проблему наша программистка решила. Слегка по-другому написала код. А я еще ищу универсальное решение для Фрейма. Исправлено 1 раз(а). Последнее : Ydin, 10.05.23 09:44 |
Re: Ячейка грида недовалидирована | |
---|---|
Владимир Максимов Сообщений: 14097 Откуда: Москва Дата регистрации: 02.09.2000 |
"Ты не мудри, ты пальцем покажи!" (с)
У тебя сейчас "чистый поток сознания". Совершенно непонятно в чем именно проблема. Мы же не видим, что у тебя на экране происходит и какие кнопки ты нажимаешь Можно просто описание действий пользователя привести? 1. Вводим в ячейке Grid дробное значение 1,23 1.1. Если нажали Enter - все хорошо 1.2. Если (? что ?) - все плохо. "Плохо" означает (? что не было сделано ?) Пожалуйста, не надо "слов-заклинаний". Просто напиши, что происходит. По пунктам. Нажимаем вот это, происходит вот это, а ожидали вот такое. Не употребляй в своем ответе слово "валидация". Оно у тебя сейчас используется как некое "заклинание" в которое ты вкладываешь некий смысл, который понятен только тебе. Из описания, что именно ты в это слово вкладываешь лично я не понимаю. Поэтому и прошу пошаговую инструкцию для воспроизведения проблемы |
Re: Ячейка грида недовалидирована | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Привет Александр !
Такое может происходить, если эта Кнопка не стандартный баттон, а объект не принимающий фокуса, скажем картинка с рабочим методом Click() При этом грид не теряет фокуса и не отрабатывают ни Valid ни LostFocus и метод видит старое необновленное значение. И только потом когда у тебя фокус получает верхний грид и отрабатывает валид первого грида. Если так, то я бы добавил в начало метода кнопки принудительную потерю фокуса первого грида. Например сделать SetFocus на фантомный чекбокс на этой форме - тогда валид отработает. ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Ячейка грида недовалидирована | |
---|---|
akvvohinc Сообщений: 4213 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Как я понял, подобный явный костыль Саша уже реализовал. Но тогда вместо создания "фантомного чекбокса" и перевода на него фокуса проще просто посылать тот ненажатый Enter. Исправлено 2 раз(а). Последнее : akvvohinc, 10.05.23 16:54 |
Re: Ячейка грида недовалидирована | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Приветствую !
[quote akvvohinc][quote]... Но тогда вместо создания "фантомного чекбокса" и перевода на него фокуса проще просто посылать тот ненажатый Enter. [/quote] Я бы не стал так делать, да и Вы наверное тоже ) Причин масса : 1) В общем случае текущее поле в гриде может быть и не то, где уместен этот Enter или он вообще не приведет к валиду, например в Editbox 2) Если объект тот и поле то, то придется выяснять был ли он "не нажатый" - чтобы лишний Enter не загнать 3) Посылать в буфер клавиатуры ? - я не уверен что Enter всегда отработает там где нужно в цепочке событий ) Временный перевод фокуса на другой объект снимает все вопросы ) ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Ячейка грида недовалидирована | |
---|---|
akvvohinc Сообщений: 4213 Откуда: Москва Дата регистрации: 11.11.2008 |
Значит, я чего-то не понял. Вы предложили создавать этот чекбокс всегда? Я же полагал, что и создание чекбокса ради перевода фокуса, и эмуляция нажатия Enter ради того же будут выполняться только в тех случаях, когда это необходимо (я не задумывался, можно ли и если можно, то насколько легко определить эту необходимость). Я мог бы разобрать и приведенные причины, если вы распишете более подробно, где и в какой момент предлагалось создавать чекбокс. Можно даже работающий прототип. А потом я попробую сделать на его основе вариант с Enter (или его аналог), но без создания фиктивного объекта. Хотя про пункты 1) и 3) можно ответить уже сейчас: 1) Мы говорим про Enter потому, что Саша написал именно об Enter. Но перевести фокус можно и другими способами, например, нажимая Tab. Можно и просто там же, где вы собирались создавать чекбокс, перевести фокус на тот объект, на который он бы перешел после штатного нажатия Enter, и даже вернуть его потом обратно, если нужно или хочется. 3) я бы не дал голову на отсечение, что 2х2 в результате всегда даст 4. А поэтому я приму во внимание любые сомнения лишь после того, как мне покажут вариант, в котором нечто не работает так, как предполагалось. PS Кстати, мы, возможно, обсуждаем то, чего нет - Саша пока не подтвердил, что валидация не происходит из-за того, что Valid не отрабатывает (фокус не переводится). Я почему-то думаю, что проблема может быть в логике самого метода Valid. |
Re: Ячейка грида недовалидирована | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Приветствую !
Не буду лукавить - у меня на всех формах живет такой чекбокс ) вне видимости окна и с Enabled=.f. чтобы случайно фокус не перешел. Пришлось так сделать когда пришло поколение юзеров, которые не покидая поле ввода сразу жмут горячую клавишу или нестандартную кнопку (вангую) как у Александра. Да можно создать прототип, затем Вы покажете вариант с Keyboard Enter или Tab, затем я постараюсь и покажу как буфер клавиатуры может опорожниться совсем не там где надо ) а Вы покажете как этого избежать ) а на другой чаще весов наше с Вами драгоценное время и похоже потеря интереса у Александра ) и одну и ту же проблему можно решить N способами ... ) Если принципиально, мы можем продолжить ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Ячейка грида недовалидирована | |
---|---|
akvvohinc Сообщений: 4213 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Спасибо, Равиль! Конечно, ничего принципиального для меня здесь нет. (тем более, что сегодня начинается ЧМ по хоккею, и мне будет, на что потратить часть свободного времени. ) |
Re: Ячейка грида недовалидирована | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Пожалуйста ) аналогично - только не хоккей, а садово-огородный сезон ! ------------------ Тяжело согнать курсором муху с монитора ... |
© 2000-2024 Fox Club  |