|
|
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Есть форма для ввода параметров, параметры, обязательные для ввода, выделены желтым цветом (их 20 штук). Есть кнопка "Сохранить". Естественно, сохранение невозможно, пока все обязательные параметры не будут введены. Как мне наилучшим способом в методе Click кнопки "Сохранить" обежать все объекты на форме, обязательные для заполнения? С уважением, Михаил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 17:40 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 17:57 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Создай курсор с нужным количеством полей в INIT-формы и создай в этом курсоре пустую запись. Затем привяжи все объекты формы, обязательные для заполнения, к полям этого курсора (ControlSource). По кнопке "Сохранить" просто просматриваешь содержимое полей курсора. Если есть не заполненные - сообщение об ошибке. Можно реализовать то же самое через переменные памяти или свойства формы. Т.е. просматривать не объекты, а то, куда записываются значения из этих объектов. Сканирование объектов формы, теоретически возможно, но, в общем случае, довольно сложно осуществить на практике. Тут ведь возможна рекурсия (объекты расположены в контейнерах или на разных страницах PageFrame). А кстати, раз есть кнопка "Сохранить", то, значит, информация из объектов где-то в явном виде переносится в какое-то хранилище? Нельзя "вклинится" в процесс переноса с нужной проверкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 22:23 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ простое и тупое плоское программирование прошлого века в фокспро можно сделать так на основе базовых классов сделать свои классы - текстбоксы и ... у них прописать стандартный метод валид, или добавить свой метод, в который будет писаться какой-то алгоритм контроля (который может быть сложным и зависить от каких-то измененных свойств) при разработке формы положить на эту форму контролы из библиотеки, если необходимо, то переписать им методы контроля при каком-то событии (нажатии на сохранить или .... это сразу можно прописать и у шаблона-заготовки класаа-формы) перебрать контролы на форме со вхождением, если необходимо в классы, которые могут быть контейнерами контролов, и продернуть определенный метод контроля. (будет оч.правильным создать класс-лог как в 1С и показывать туда все сообщения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 10:19 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
alex111002 ВладимирМ простое и тупое плоское программирование прошлого века Ну да, разумеется, простые решения не для нас! Мы пойдем своим путем! alex11100в фокспро можно сделать так ... Можно. Только зачем? Данная конкретная задача заключается в том, чтобы проверить ряд введенных значений. Это можно реализовать на уровне интерфейса (методы контролов формы) или на уровне данных (проверить, а что записывается-то). На уровне данных - это решается простым и понятным способом. "Тупым", если Вам так больше нравится. На уровне интерфейса есть одно слабое место: "перебрать контролы". Если возможны вложения в контейнеры, то этот самый перебор становится довольно не тривиальной задачей. Хотя для его решения есть обходной путь через SetAll() или Refresh(). Т.е. вызвать некий метод, который глобально сработает для всех объектов без исключения, а уж объект сам доложит все-ли у него в порядке. Но в любом случае, на уровне интерфейса - это относительно сложное решение. Поэтому, прежде чем идти "лесом" следует взвесить стоит ли "огород городить" если есть более простое и очевидное решение, требующее меньше затрат во всех смыслах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 13:05 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
авторНо в любом случае, на уровне интерфейса при чем здесь уровень интерфейса???? это ООП когда объект объектом погонят, у объекта есть признаки, объемы признаков есть пересечение этих объемов ..., есть операции над этими объемами есть сущности, различные ... есть голова на плечах ... можно порождать события и смотреть, что будет можно следить за какими-то событиями .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 13:53 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Ваши простые решения порождают реализацию в лоб, постоянное тупое кодирование и соответственное получение проблем в сопровождении при каких-то доработках всей этой плоской простоты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 14:00 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
я Вам еще раз повторю основное преимуществу лиса - это наличие удобного дизайнера классов наличие курсоров с курсорадаптером с автоматическим приобразованием данных а так-бы он не нужен и даром был ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 14:17 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Как Вы думаете, если необходимо обратится к объекту, отображенному на форме, в который пользователь вводит данные можно ли это назвать "работой с интерфейсом"? В смысле, работой с теми же объектами из которых состоит интерфейс? Как Вы думаете, если проблема имеет несколько решений, но одно из них выполняется быстро, а для исполнения другого надо переделывать весь проект "с нуля", то какое решение будет выбрано? Укажите, пожалуйста, где в данной теме я категорически не согласен с предложенным Вами решением и утверждал, что использовать его нельзя ни в коем случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 14:53 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
ВладимирМ обращение из метода одного объекта к методу другого это никоем образом не взаимодействие с интерфейсом, даже если эти объекты визуальные в методе любого объекта я могу инициировать любое событие, которое может затрагивать механизм проверки целостности БД, либо производить какие-то действия взависимости от события произошедшего и инициированного БД, да и выводить сообщения в интерфейс (все зависит от реализации, но принцип един- объект сам умный и сам о себе заботится, а не отдает все на откуп посторонним сущностям, которые что-то делают) значит все что я описываю работа с интерфейсом?? я думал, что это работа с объектами разницу Вы улавливаете?? в MsSQL к примеру дергать БД или использовать механизмы службы уведомлений?? авторпеределывать весь проект "с нуля" главное, чтобы разработчик попробовал, задумался о такой возможности, понял преимущества построения библиотек классов, ОО (ну раз Вам так нравится) интерфейсов, начинал думать кто кому и кем доводится, что и как нужно делать, максимально использовал методы абстракции и не кодил километры, а затем это переделывал, если изменятся требования к проверке, внешнему виду и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 15:23 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
Александр, Вы опять прочитали слова, а не текст, а затем приписали мне свои собственные высказывания. Нехорошо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 18:28 |
|
||
|
Быстрый перебор параметров на форме
|
|||
|---|---|---|---|
|
#18+
сорри за офтопик давайте выделим отдебьную тему alex100 против всех- даже интересно почитать будет зы хотя я согласен с решением сам так делаю черз свойстов no_empty объектов - один раз написал метод с учетом всех >> Тут ведь возможна рекурсия (объекты расположены в контейнерах или на разных страницах PageFrame). и дергаю его по умолчанию ( в форме редактирования есть свойство ) имхо очень удобно ( правда у мненя все через контейнеры - один класс ввода ) поэтому if loControl.baseclass = '...' катит а так список надо textnox , combobox,editbox ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 19:43 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34585654&tid=1589176]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 364ms |

| 0 / 0 |
