Проверка условий при нажатии кнопки "ОК!"

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

Проверка условий при нажатии кнопки "ОК!"

Сообщение pansoft »

Добрый день, всем!

Как правильно написать код кнопки "Ок!", когда нужно проверить, например правильность заполнения полей, и если что не правильно,
то вернутся к редактированию формы, если правильно то закрыть форму?

Заранее благодарен.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Проверка условий при нажатии кнопки "ОК!"

Сообщение gopstop2007 »

Вы бы указали версию клариона и какие шаблоны используете (Clarion,ABC)...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

Проверка условий при нажатии кнопки "ОК!"

Сообщение pansoft »

Извеняюсь! Clarion 9.1 ABC.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Проверка условий при нажатии кнопки "ОК!"

Сообщение gopstop2007 »

Самое простое, до Generated code в Event-е кнопки

Код: Выделить всё

IF a <> 0 THEN select(a); CYCLE END
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

Проверка условий при нажатии кнопки "ОК!"

Сообщение pansoft »

Спасибо, то что нужно!
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Проверка условий при нажатии кнопки "ОК!"

Сообщение kreator »

"CYCLE" не совсем здесь точно. Лучше сразу "return Level:Notify". Подозреваю, что обработка CYCLE в данных методах ABC-классов осталась для совместимости с Legacy.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Проверка условий при нажатии кнопки "ОК!"

Сообщение Shur »

gopstop2007 писал(а): Самое простое, до Generated code в Event-е кнопки

Код: Выделить всё

IF a <> 0 THEN select(a); CYCLE END
Что до меня, то меня вполне устраивает использование CYCLE. Только здесь есть одна ошибка. Надо бы так:

Код: Выделить всё

IF a <> 0 THEN select(?a); CYCLE END
К сожалению, эта ошибка довольно трудно вылавливается, а компилятор думает, что такова задумка мастера, даже warning'а не выдает.
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Проверка условий при нажатии кнопки "ОК!"

Сообщение morkovin »

когда нужно проверить, например правильность заполнения полей, и если что не правильно,
то вернутся к редактированию формы, если правильно то закрыть форму?
Не понимаю, почему просто не использовать шаблоны Sv Business Rules (global / local)?
WBR, morkovin
ACN
Бывалый
Сообщения: 98
Зарегистрирован: 28 Июнь 2015, 13:04

Проверка условий при нажатии кнопки "ОК!"

Сообщение ACN »

morkovin писал(а): Не понимаю, почему просто не использовать шаблоны Sv Business Rules (global / local)?
CW6.3 ABC. Мне потребуется сделать несколько больше, реализовать причинно-следственную связь в последовательности записей. Поскольку содержимое очередной записи в моей задаче может зависеть от содержания предыдущей записи, то и при добавлении/редактировании последней записи я должен прочитать предыдущую, а по Ok! не только проверить заполнение полей в текущей, но и при определённом условии внести правку в предыдущую запись. Естественно, что сейчас я понятия не имею как это можно настроить и будет делать в АБС. Поделитесь возможными решениями, плиз!
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Проверка условий при нажатии кнопки "ОК!"

Сообщение kreator »

ACN писал(а):Поскольку содержимое очередной записи в моей задаче может зависеть от содержания предыдущей записи, то и при добавлении/редактировании последней записи я должен прочитать предыдущую, а по Ok! не только проверить заполнение полей в текущей, но и при определённом условии внести правку в предыдущую запись.
На мой взгляд, неправильный подход. Не знаю конкретики, но я бы сделал наоборот - сначала прочитал бы содержимое предыдущей записи, а потом позволил бы пользователю занести только то, что можно. Ну и пример недавний для понимания. У сотрудника в компании могут быть события: приём на работу, перемещение, увольнение. Так вот. Я проверяю, если нет записей совсем, то может быть только "приём". Если есть "приём", то только "перемещение" или "увольнение". Если есть "увольнение" - то только "приём". Как-то так.
We are hard at work… for you. :)
ACN
Бывалый
Сообщения: 98
Зарегистрирован: 28 Июнь 2015, 13:04

Проверка условий при нажатии кнопки "ОК!"

Сообщение ACN »

kreator писал(а): но я бы сделал наоборот - сначала прочитал бы содержимое предыдущей записи, а потом позволил бы пользователю занести только то, что можно.
Так и сделано под ДОС, об этом и писал. Причём возможна и цепочка таких связанных записей и не обязательно с предыдущей, но может и с предпредыдущей.
Пояснить суть можно на примере записей наблюдений над объектом. Некоторые наблюдения не получились, пишем то что получилось, ставим пометку повторить, а потом когда повторили возвращаемся и дописываем, что повторено токого то числа. Примерно так.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Проверка условий при нажатии кнопки "ОК!"

Сообщение kreator »

ACN писал(а):Так и сделано под ДОС, об этом и писал.
Ну и не надо никаких изменений. Методика работы с реляционными БД не изменилась. Тем более это Clarion, поддерживает старые подходы. В Вашем случае (если всё же хочется писать в предыдущую запись, что неправильно, я бы сделал в новой ссылку на старую) нужно идти в метод окна Kill и там писать в Embeds до закрытия таблиц/файлов свой код, типа:

Код: Выделить всё

  if (self.Request=InsertRecord or self.Request=ChangeRecord) and self.Response=RequestCompleted
     ...
  end
We are hard at work… for you. :)
ACN
Бывалый
Сообщения: 98
Зарегистрирован: 28 Июнь 2015, 13:04

Проверка условий при нажатии кнопки "ОК!"

Сообщение ACN »

kreator писал(а): если всё же хочется писать в предыдущую запись, что неправильно, я бы сделал в новой ссылку на старую
Что значит неправильно? Мне понадобится читать старую запись при просмотрах и писать в отчётах и решать вопрос было или нет повторено неудачное наблюдение как и было запланировано. Смысл писать в новую запись есть только тогда когда нет задачи отчётов и контроля, я так понимаю. Другое дело подумать над вспомогательным файлом, но я что ничего не придумал пока.
Вся эта кухня в рамках одной транзакции, однако...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Проверка условий при нажатии кнопки "ОК!"

Сообщение kreator »

Вы в новой записи делаете ссылку на старую. А при просмотрах старой и т.д. отображаете информацию, записанную в новой. Грубо говоря, связь "родитель-ребёнок".
We are hard at work… for you. :)
ACN
Бывалый
Сообщения: 98
Зарегистрирован: 28 Июнь 2015, 13:04

Проверка условий при нажатии кнопки "ОК!"

Сообщение ACN »

kreator писал(а): Вы в новой записи делаете ссылку на старую. А при просмотрах старой и т.д. отображаете информацию, записанную в новой. Грубо говоря, связь "родитель-ребёнок".
По Вашей методе мне всё равно надо в старой указывать ссылку на новую, потому что я понятия не имею в старой записи о том, что она исполнена должным образом и в какой конкретно очередной новой записи. У меня целые цепочки таких повторений наблюдений. Так что не прокатит писать только в новой, по крайней мере я такой механики пока не придумал.
Выкладывать запись контроля в отдельный дочерний файл тоже не здорово, лишние тормоза на отчётах и логика не проще.
Ответить