
Как и обещал выкладываю новую доработанную версию.
В TOptions v.1.7. детально переработаны модуль Options и редактор опций.
- Устранено довольно много мелких ошибок.
- Реализована новая полезная возможность, - привязка опций к контролам на форме, для автоматического взаимодействие их с компонентом. Компонент сам меняет значение опции согласно свойств контрола и наоборот.
- Добавлен новый метод ValueAsBool, необходимый для определения содержит ли опция значения отличное от нуля и пустой строки.
- Исправлена работа свойства FileName. Который наконец адресует опции по указанному пути а не только в папку к exe-шнику.
- Исправлено поведение редактора при появлении.
- Исправлено сохранение настроек компонента, которые в некоторых случаях могли не сохраниться после закрытия редактора.
- Восстановлен порядок переключения между контролами в редакторе.
- Исправлено поведение окна About :)
Тем кто сталкивается с этим компонентом впервые сюда. Там находится более детальное описание использования компонента.
Для TOptions 1.6. я в качестве примера разбирал мини-програмку с одной единственной опцией, менявшей заголовок окна. И разделил работу над ней на 5 этапов. Для сравнения приведу пример реализации той-же програмки с новым компонентом (но расписывать не буду, нет смысла повторятся).
Этап 1. Готовимся к работе.
Создаем проект, кидаем компонент TOptions на форму. В инспекторе объектов задаем значения свойствам AutoApply и AutoSave равным True, остальные оставляем как есть.
Этап 2. Создаем контролы.
Просто ложим контрол TLabeledEdit на форму.
Создаем секцию, в ней опцию, задаем ей тип - string, какое-ниубдь значение по умолчанию, выбираем наш контрол в списке Контрол.
Этап 4. Применяем/Загружаем.
Откровенно говоря я немного хитрю, объединяя два последних этапа в один, но 4 этап настолько усох по стравнению с аналогом из 1.6, что я имею на это полное право :).
Пишем обработчик для применения опции.
procedure TForm1.Options1OptionApply(Sender: TObject; CurrentOption: TOption);
begin
if CurrentOption.Ident = 'Имя программы' then //проверяем идентификатор опции
Caption := CurrentOption.Value //применяем значение опции к имени формы
end;
Вызываем Options1.LoadAllOptions; в событии формы OnCreate, для загрузки опций при старте формы.
procedure TForm1.FormCreate(Sender: TObject); begin Options1.LoadAllOptions; end;
Все, можно загружать и смотреть.
Компонент поддерживает далеко не все существующие контролы, и в списке выдаются лиш те из них которые подходят к типу выбранной опции. Плюс есть еще одно ограничение, - компонент должен находится на той-же форме что и сами контролы.
Список поддерживаемых контролов для типов данных в версии 1.7:
string: TLabeledEdit, TEdit, TComboBox.
Integer: TLabeledEdit, TEdit, TComboBox, TSpinEdit, TTrackBar.
Boolean: TComboBox, TCheckBox, TToolButton.
Float:TLabeledEdit, TEdit, TComboBox.
TDateTime: TDateTimePicker.
TColor: TColorBox.
TShortCut: THotKey.
Если вы хотите видеть в этом списке другие нужные вам контролы, отпишитесь я постараюсь реализовать поддержку и для них.
Как видите в TOptions v.1.7 писанины стало еще меньше. Вспомните какое количество кода необходимо написать для такой-же програмки без TOptions. А если при этом задействованна не одна опция код вырастает в разы. А так все просто и удобно, накидал контролов на форму настроил компонент, написал пару обработчиков, выбрал место хранения и окно с настройками готово. Пользуйтесь с удовольствием :). Если нравится не жадничайте, рассказывайте знакомым, чем больше пользователей у компонента тем эффективнее будет его развитее.
Для обновления с версии 1.6 достаточно при закрытом Delphi, удалить все файлы компонента из папки BuBa, в которую у вас установлен компонент, кинуть туда новые файлы из архива. Открыть TOptions_pack.dpk, инсталировать его через контекстное меню в Delphi. Все.
Для "новой" установки компонента или обновления с более ранних версий чем 1.6, пользуйтесь инструкцией в файле Readme.txt из архива.
СКАЧАТЬ:
TOptions(221.58 kB) – компонент для удобной работы с опциями в Delphi версия от 01.09.2010г.
! Актуальную версию ищите на страничке:
http://buba-group.ru/index.php/toptionsdownload
p.s.: С Днем Знаний всех!!!
Кто владеет информацией - то владеет всем. А как быть, если Вы хотите не спрятать, а наоборот - поделиться информацией? Просто сделайте большой и привлекательный информационный стенд :) Для жителей Краснодара - это не проблема, так как заказ информационных стендов в Краснодаре можно осуществить в рекламно-производственной компании "Территория Цвета".
---------------------------------------------------------------------
| Делись! | Загружай! | Плюсуй! |
| | |










02 Сен 2010 в 6:08 пп
Антон, TOptions работает с ini через класс TIniFile из модуля IniFiles, так-что он будет вести себя точно так же как и TIniFile.
А зачем нужен ini в юникоде, если не секрет?
03 Сен 2010 в 11:23 дп
Просто иногда в Ini-файлах необходимо хранить строки на национальном языке. К примеру: C:\Documents and settings\??, ??\Application Data\MyApp\storage.bin. Если поддержки юникода нет, то имя пользователя будет сохранено как ???, в итоге значение данного поля оказывается неверным.
03 Сен 2010 в 5:14 пп
Блин…плагин для Живой ленты то не работает, то работает…вот опять заработал — продублировал два первых коммента из сообщения в ленте
03 Сен 2010 в 5:20 пп
Я сначала подумал, что кто-то вручную продублировал сообщения :) Буду знать, что комментарии из живой ленты могут тут дублироваться!
03 Сен 2010 в 8:10 пп
Поддержку юникода реализую в 1.8.
Когда выйдет сказать пока не могу.
05 Сен 2010 в 12:58 дп
опечатка
Очердная версия “опционального” компонента :).
Очередная версия “опционального” компонента :).
05 Сен 2010 в 9:58 дп
спасибо. поправил :)
06 Сен 2010 в 4:37 пп
[...] [...]
06 Сен 2010 в 4:39 пп
Возможно ли сохранение в XML?, а то INI при урезаных учетках и размещении в program files выдает ошибки и не грузится
06 Сен 2010 в 5:39 пп
Евген, делайте программы для висты и 7-ки по их правилам. «%appdata%\ИмяПрограммы\ИмяФайла.ini». Тогда он не должен ругаться :).
А на счет поддержки .xml пока ничего сказать не могу. Скорее всего реализую, но врядли скоро. Времени сейчас мало.
Чего ждать в ближайшее время:
v.1.7.1 — исправление работы с контролом TDateTimePicker, оптимизация работы со всеми контролами.
v.1.8 — поддержка юникода.
Может что еще в эти версии добавлю, зависит от многих факторов в основном от ваших коментов, и по большей части касатся будет исправления ошибок.
А поддержка новых «хранилищ», xml и бд, будет реализовываться когда будет больше свободного времени.
p.s.: Если компонент действительно полезен и популярен (будет полезен и популярен), сделаем отдельную страничку ему и полноценную поддержку :). А пока всё своими силами на «коленках» делаю, приходится мирится с некоторыми неудобствами.
07 Сен 2010 в 2:02 пп
А как это все прикрутить к DELPHI7 ?
07 Сен 2010 в 2:11 пп
Вопрос о совместимости с D7 раскрывался WildFrag-ом тут
Обещать не буду, но постараюсь в следующих версиях учитывать D7.
07 Сен 2010 в 6:45 пп
WildFrag пишет о «микроскопических» изменениях (удаление несуществующих свойств), но это видимо в предыдущей версии так.
В версии же 1.7. нужно ковырять код.
Я сперва переделал function TOption.GetControl: TWinControl;
Далее компилятор еще обо что-то споткнулся, я уже не стал дальше копать
07 Сен 2010 в 7:15 пп
Не надо ничего ковырять :) Тем-более в модулях.
Вот версия1.6, с которой имел дело WildFrag.
Следующие постараюсь к D7 прикрутить.
10 Сен 2010 в 1:08 пп
установил, открыл свой проект, кинул компонент на форму. Захожу в свойство итемс у options — вылазит ошибка Error reading ImageList1.ColorDepth does not exist. Что может быть?
WinXP Delphi2010 TOptions 1.7
11 Сен 2010 в 11:40 дп
Такой проблемы, по идее, быть не должно.
Компонент написан именно на D2010.
Я давно хотел от TImageList избавиться.
Уберу его в 1.7.1
11 Сен 2010 в 1:58 пп
Выложил TOptions v.1.7.1
23 Янв 2011 в 1:52 пп
TMemIniFile -прекрасно работает с юникодом
TMemIniFile.Create(ExtractFileDir(Application.ExeName)+’\'+ChangeFileExt(ExtractFileName(Application.ExeName),’.ini’), TEncoding.UTF8);
24 Янв 2011 в 3:33 пп
Огромное спасибо Denis.
Новую версию, с поддержкой юникода, можно скачать отсюда:
http://buba-group.ru/index.php/toptionsdownload.