|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Отключение/включение MessageBox, разбросанных по кодовой базе23.07.2017, 08:04. Показов 3420. Ответов 33
Метки нет (Все метки)
Даже не знаю, как правильно тему назвать по этому поводу. Вообщем, попробую описать то, что я хочу.
Допустим есть программа, которая при различных манипуляций пользователя с ней, может выкидывать всякие разные оповещения
MessageBox очень много, и они раскиданы по всех кодовой базе.Суть в том, что нужно организовать CheckBox в меню настроек программы, который может включать/выключать такого рода оповещения, причем скорее всего нужно будет оповещения по типу различать, и таких CheckBox будет несколько, которые будут включать/отключать только свои оповещения. Я знаю, как решить такую задачу, но мой подход не очень мне нравится, да и вообще он ущербский - это просто перед каждым вызовом MessageBox проверять условие...глупоМне интересно Ваше мнение, как Вы бы сделали эту задачу. Мне бы хотелось услышать правильное решение проблемы, чтобы больше к таким видам задач не возвращаться.
0
|
||||||
| 23.07.2017, 08:04 | |
|
Ответы с готовыми решениями:
33
Отключение / включение функций Отключение / включение USB Отключение\Включение дисководов |
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 24.07.2017, 21:44 [ТС] | ||
|
Usaga,
1.0 Первый запуск программы 1.1 Проверяет есть ли в реестре путь до БД 1.2 Если есть, и все нужные для программы таблицы на месте идем на пункт 2.0 1.3 Если нет, то вызываем окно с настройками и просим ввести путь до БД, если пользователь вводит правильный путь и таблицы нужные программе на месте, записываем путь в реестр и идем на пункт 2.0 2.0 Грузим базу В принципе все просто, но всю эту хрень я написал для таких ситуаций: 1. Может кто-то удалить/переместить базу данных, а путь в реестре уже прописан 2. Стереть значение в реестре 3. Удалить некоторые таблицы из базы данных, которые нужны программе. Из-за этого и получается вся эта фигня
0
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|||
| 25.07.2017, 05:27 | |||
|
1
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 25.07.2017, 08:13 [ТС] | ||
|
Usaga,
Как только я начал возиться с всякими исключительными ситуациями(стирания значения в реестре), то моя программа стала темным лесом. Я уже сам запутался в ней. Вы мне предлагаете, перед тем как выполнить обращение к базе данных, проверять реестре, читать из него путь до бд, и уже пытаться обратиться к базе данных, и если выпадет исключение, ловить его и все? Я правильно Вас понял? А в Settings просто у свойство PathToDB установить автоматические акссесоры?
0
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|
| 25.07.2017, 08:24 | |
|
Bretbas, вам и так нужно из реестра путь к базе читать)
Я вам предлагаю навешивать обработчики исключений в нужных местах. И одни, глобальный, вообще на всё (на случай совсем уж непредвиденной ситуации). Не имеет смысла делать проверку пути к базе, которую вы тут же попытаетесь открыть. Ошибку-то вы гарантированно получите. Проверки имеют смысл там, где некорректность данных проявится не сразу. У вас же, насколько я понял, такого нет. Ну и всю схему базы проверять тоже смысла особого нет. Во-первых, это конская работа, во-вторых, изменения схемы базы тоже не останутся незамеченными во время работы приложения. Оборачивайте важные места в try\catch, извещайте пользователя об ошибках по мере их появления. Не пытайтесь предугадать все ошибочные ситуации, это тупо невозможно, но времени займёт массу.
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||||||||||||||||
| 25.07.2017, 08:42 [ТС] | ||||||||||||||||||||||
|
Usaga,
![]() А что Вы скажете по поводу этого: Программа работает с несколькими шаблонами Word. Я расскажу про один, остальные аналогичные. Итак есть в настройках textBox, где можно задать путь до шаблона. Этот путь также записывается в реестр, и при новом открытии программы читается из него. Также, если не указан путь в настройках, то шаблон распаковывается из ресурсов программы в определенную папку и записывается в реестр путь до него. Тоесть логика такова, что путь до шаблона должен быть всегда указан, если он не указан, программа укажет его сама + шаблон должен присутствовать по пути по любому. Я сделал это так, поправьте пожалуйста, как правильно: В Settings есть свойство PathToDescription. Оно отвечает за путь до шаблона. Я инкапсулировал в нем все проверки.
0
|
||||||||||||||||||||||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|
| 25.07.2017, 09:25 | |
|
Bretbas, это правда ужас. Лютый.
![]() Настройки должны быть пассивным механизмом. Один механизм (класс) должен их просто считывать откуда-то в другой класс, а третий уже выполнять разные телодвижения, по доведению состояния приложения до ума (копирование шаблонов, если есть и т.д). Не используйте static никак, кроме для хелперов и синглтонов!Должно быть так: настройки должны быть инициализированы и готовы к работе перед инициализацией формы и вообще не должны иметь отношения к UI!
1
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 25.07.2017, 09:56 [ТС] | |||
|
Usaga,
0
|
|||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|||
| 25.07.2017, 10:14 | |||
|
0
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 25.07.2017, 10:36 [ТС] | ||
|
Usaga,
1. Кем у меня в программе будет выступать в роли класса-бизнес логики, который будет смотреть настройки, и будет говорить нравятся ему они или нет 2. Почему нельзя в классе поставщика выяснять при чтении настроек - нормальные они или нет. И также при записи настроек, проверять всякие условия, такие как - путь должен быть правильным, по этому пути должен быть файл, этот файл должен быть .doc или .docx. 3. Все эти классы должны быть синглтонами? Я думаю, да, так как мне не нужно несколько экземпляров этих классов. Пока вопросов нет, но они могут возникнуть по мере написания кода
0
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
||||
| 25.07.2017, 10:59 | ||||
|
0
|
||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 25.07.2017, 13:35 [ТС] | |
|
Usaga, В класс-менеджер настроек будет в себе хранить экземпляр класса-поставщика настроек, который в свою очередь хранит в себе экземпляр класса-настроек. Так? Все остальные классы приложения будут обращаться только с классом менеджером, запрашивать у него те или иные настройки. Этот класс-менеджер перед запросом будет проверять всякие условия, обращаться к классу-поставщику, а класс-поставщик будет запрашивать у класса-настроек. И аналогично для обновления данных настроек. Все будет проходить через менеджер. Я Вас правильно понял?
Если да, то неясно следующее: Если будут добавляться новый пункт в настройках, то мне нужно обновлять 3 класса получается?
0
|
|
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
||
| 25.07.2017, 14:19 | ||
|
Bretbas, поставщик будет только читать настройки. Хранить их вообще никто не обязан. Но, если нужно, то это может делать менеджер.
Всё ровно тоже самое пришлось бы сделать и в случае с одним единственным классом. Разница только в том, что я рекомендую разделить работу с настройками на три простые части, нежели держать всё в одной куче.
1
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 25.07.2017, 14:45 [ТС] | ||
|
Usaga,
1. Класс настроек(там только данные) 2. Класс поставщик настроек(является прослойкой между классом настроек и классом менеджером. Умеет только читать/записывать в класс настроек данные) 3. Класс менеджер(является синглтоном, владеет поставщиком настроек, и с предварительными проверками, записывает/читает через поставщика настройки. В программе вся работа с настройками будет происходить через этот менеджер)
0
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|
| 25.07.2017, 16:12 | |
|
Bretbas, ни кто не обязан хранить в том смылсе, что если настройки нужны только для некоторых отдельных задач (типа подключения к БД), то их (настройки) можно получить, использовать и потом "потерять" до следующего раза. Но если они постоянно нужны, то можно их и хранить. Но не обязательно в менеджере. Настройки из менеджера бизнес-логика запрашивает (если таковая есть), вот они и может хранить.
Но если вам будет проще, то просто в менеджере храните, он у вас всё равно синглтоном планируется быть.
0
|
|
| 25.07.2017, 16:12 | |
|
Включение/отключение сопроцессора Включение / отключение прокси Отключение и включение меню
Отключение и включение картинок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|