Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал SeregaAltmer 1 сентября 2010 в 21:02.
Категории: Компоненты Delphi.



Как и обещал выкладываю новую доработанную версию.

В TOptions v.1.7. детально переработаны модуль Options и редактор опций.

  • Устранено довольно много мелких ошибок.
  • Реализована новая полезная возможность, - привязка опций к контролам на форме, для автоматического взаимодействие их с компонентом. Компонент сам меняет значение опции согласно свойств контрола и наоборот.
  • Добавлен новый метод ValueAsBool, необходимый для определения содержит ли опция значения отличное от нуля и пустой строки.
  • Исправлена работа свойства FileName. Который наконец адресует опции по указанному пути а не только в папку к exe-шнику.

  • Исправлено поведение редактора при появлении.
  • Исправлено сохранение настроек компонента, которые в некоторых случаях могли не сохраниться после закрытия редактора.
  • Восстановлен порядок переключения между контролами в редакторе.
  • Исправлено поведение окна About :)

Тем кто сталкивается с этим компонентом впервые сюда. Там находится более детальное описание использования компонента.

Для TOptions 1.6. я в качестве примера разбирал мини-програмку с одной единственной опцией, менявшей заголовок окна. И разделил работу над ней на 5 этапов. Для сравнения приведу пример реализации той-же програмки с новым компонентом (но расписывать не буду, нет смысла повторятся).

Этап 1. Готовимся к работе.

Создаем проект, кидаем компонент TOptions на форму. В инспекторе объектов задаем значения свойствам AutoApply и AutoSave равным True, остальные оставляем как есть.

Этап 2. Создаем контролы.

Просто ложим контрол TLabeledEdit на форму.

TOptionPropertyEditor Редактор опций компонента для работы с опциями TOptions 1.7
Этап 3. Редактор опций.

Создаем секцию, в ней опцию, задаем ей тип - 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 из архива.

СКАЧАТЬ:
zip TOptions(221.58 kB)  – компонент для удобной работы с опциями в Delphi версия от 01.09.2010г.
! Актуальную версию ищите на страничке:
http://buba-group.ru/index.php/toptionsdownload

p.s.: С Днем Знаний всех!!!

---------------------------------------------------------------------
Кто владеет информацией - то владеет всем. А как быть, если Вы хотите не спрятать, а наоборот - поделиться информацией? Просто сделайте большой и привлекательный информационный стенд :) Для жителей Краснодара - это не проблема, так как заказ информационных стендов в Краснодаре можно осуществить в рекламно-производственной компании "Территория Цвета".
---------------------------------------------------------------------
Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (19)

WP_Cloudy
  • SeregaAltmer пишет:

    Антон, TOptions работает с ini через класс TIniFile из модуля IniFiles, так-что он будет вести себя точно так же как и TIniFile.
    А зачем нужен ini в юникоде, если не секрет?

  • Антон Исаев пишет:

    Просто иногда в Ini-файлах необходимо хранить строки на национальном языке. К примеру: C:\Documents and settings\??, ??\Application Data\MyApp\storage.bin. Если поддержки юникода нет, то имя пользователя будет сохранено как ???, в итоге значение данного поля оказывается неверным.

  • Vlad пишет:

    Блин…плагин для Живой ленты то не работает, то работает…вот опять заработал — продублировал два первых коммента из сообщения в ленте

  • Антон Исаев пишет:

    Я сначала подумал, что кто-то вручную продублировал сообщения :) Буду знать, что комментарии из живой ленты могут тут дублироваться!

  • SeregaAltmer пишет:

    Поддержку юникода реализую в 1.8.
    Когда выйдет сказать пока не могу.

  • nmd пишет:

    опечатка
    Очердная версия “опционального” компонента :).
    Очередная версия “опционального” компонента :).

  • SeregaAltmer пишет:

    спасибо. поправил :)

  • Аноним пишет:

    [...] [...]

  • Евген пишет:

    Возможно ли сохранение в XML?, а то INI при урезаных учетках и размещении в program files выдает ошибки и не грузится

  • SeregaAltmer пишет:

    Евген, делайте программы для висты и 7-ки по их правилам. «%appdata%\ИмяПрограммы\ИмяФайла.ini». Тогда он не должен ругаться :).

    А на счет поддержки .xml пока ничего сказать не могу. Скорее всего реализую, но врядли скоро. Времени сейчас мало.

    Чего ждать в ближайшее время:
    v.1.7.1 — исправление работы с контролом TDateTimePicker, оптимизация работы со всеми контролами.
    v.1.8 — поддержка юникода.

    Может что еще в эти версии добавлю, зависит от многих факторов в основном от ваших коментов, и по большей части касатся будет исправления ошибок.

    А поддержка новых «хранилищ», xml и бд, будет реализовываться когда будет больше свободного времени.

    p.s.: Если компонент действительно полезен и популярен (будет полезен и популярен), сделаем отдельную страничку ему и полноценную поддержку :). А пока всё своими силами на «коленках» делаю, приходится мирится с некоторыми неудобствами.

  • Talker пишет:

    А как это все прикрутить к DELPHI7 ?

  • SeregaAltmer пишет:

    Вопрос о совместимости с D7 раскрывался WildFrag-ом тут

    Обещать не буду, но постараюсь в следующих версиях учитывать D7.

  • Talker пишет:

    WildFrag пишет о «микроскопических» изменениях (удаление несуществующих свойств), но это видимо в предыдущей версии так.
    В версии же 1.7. нужно ковырять код.
    Я сперва переделал function TOption.GetControl: TWinControl;
    Далее компилятор еще обо что-то споткнулся, я уже не стал дальше копать

  • SeregaAltmer пишет:

    Не надо ничего ковырять :) Тем-более в модулях.
    Вот версия1.6, с которой имел дело WildFrag.
    Следующие постараюсь к D7 прикрутить.

  • кирилл пишет:

    установил, открыл свой проект, кинул компонент на форму. Захожу в свойство итемс у options — вылазит ошибка Error reading ImageList1.ColorDepth does not exist. Что может быть?

    WinXP Delphi2010 TOptions 1.7

  • SeregaAltmer пишет:

    Такой проблемы, по идее, быть не должно.
    Компонент написан именно на D2010.
    Я давно хотел от TImageList избавиться.
    Уберу его в 1.7.1

  • SeregaAltmer пишет:

    Выложил TOptions v.1.7.1

  • Denis пишет:

    TMemIniFile -прекрасно работает с юникодом
     
    TMemIniFile.Create(ExtractFileDir(Application.ExeName)+’\'+ChangeFileExt(ExtractFileName(Application.ExeName),’.ini’), TEncoding.UTF8);

  • SeregaAltmer пишет:

    Огромное спасибо Denis.

    Новую версию, с поддержкой юникода, можно скачать отсюда:

    http://buba-group.ru/index.php/toptionsdownload.

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник