Показать сообщение отдельно
  #17  
Старый 24.06.2013, 06:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Посмотрел исходники.
1. Почему периодически используется ShortString? Я бы оставил обычный String.
2. В менеджере атрибуты торчат наружу, перенес (у себя) в private. По умолчинию раздел класса, если таковой не указан, public, соответсвенно, при обращении к объекту все переменные виделись, что явно не правильно.
3. А почему бы для менеджера не сделать родителя? Так можно его создать один раз потомком формы и убиать потом даже не нужно.
4. Если кликнуть на форму сообщения, то она получает фокус и, похоже, дальше "сидит прочно". В идеале, она вообще не должно получать фокус, но реагировать на клики (см ниже).

Еще хотелки.
5. Все-таки хотелось бы показыаать сразу несколько сообщений.
6. Форма сообщения должна обрабатывать клики мышью. Причем 2 типа. Первый - клик по самой форме, второй - закрытие пользователем. Еще бы надо прилепить вызов при самозакрытии формы. Я бы сделал 3 события у менеджера и дергал бы их обработчики, если таковые есть, на каждое из указанных выше действий. Для различения между разными уведомлениями им надо повесть какой-нить уникальный идентификатор (лучше задаваемый пользователем, например Tag : Integer, этого достаточно) и передавать этот идентификатор в обработчик события.
7. Почему бы не сделать 2 свойства для определения позиции окна уведомления - по вертикали и по горизонтали. Да и по центру экрана зря не создается. Мали ли что нужно...
8. Дать возможность создавать свои типы уведомлений (заголовок, иконка).
9. Убрать packed у записи описания уведомления, да и вообще переделать на класс и сделать возможность сохранения этих объектов (файл, реестр, ресурс). Это позволить так же заполнять свойства значениями по умолчанию.
10. Сделать дизайнер уведомлений, который может готовые уведомления экспортировать в файлы разных форматов и в код.

Ну вот так, на вскидку.
Если буду дальше копаться, может еще чего допишу.
Ответить с цитированием