Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 45

/ вопрос открыт /

Здравствуйте эксперты!
Вот решил задать вопрос... по моему интересный... главное - новый...
Узнать, конечно, ответ можно и самому, но долго...
Вопрос: Как у диалогов (стандартных) сохранить некоторые настройки в ini-файл (пользуюсь ini, так как легко переносить с компа на комп).
Например, у Открытия\Сохранения - Расположение - плитка, значки, список и т.д.
У выбора цвета - дополнительные цвета...
Спасибо за ответы (заранее)...

feenords Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: feenords (статус: 1-ый класс)
Вопрос отправлен: 19 июня 2006, 01:55
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: Dron

Насколько мне известно, вид отображения объектов (значки, таблица и пр.) сохранить нельзя - это от пользователя зависит, да и дополнительные цвета тоже... Однако, не раз замечал, что эти параметры действительно восстанавливаются при следующих запусках программы. В частности, каталог, из которого был выбран файл, автоматически открывается при следующем запуске. Наверное Windows самостоятельно занимается сохранением этих настроек для каждого приложения.

Ответ отправил: Dron (статус: Студент)
Время отправки: 19 июня 2006, 11:47
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: bruder

Здравствуйте, feenords!
Что то я не припомню как менять значения в меню "ВИД" (плитка, значки... если такое вообще возможно). А вот с расположением всё просто. При закрытии диалога впиши Листинг1. А при его загрузке Листинг2.
Для дополнительных цветов у ColorDialog'a есть свойство CustomColors. (Всё аналогично)

Приложение:
  1. Uses IniFiles;
  2. var ini: TIniFile;
  3.  
  4.  
  5. ini:=TIniFile.Create('bla.bla');
  6. ini.WriteString('1','2',ExtractFilePath(OpenDialog1.FileName));
  7. ini.Free;
  8.  
  9.  
  10. ini:=TIniFile.Create('bla.bla');
  11. OpenDialog1.InitialDir:=ini.ReadString('1','2','C:');
  12. ini.Free;


Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 19 июня 2006, 12:08
Оценка за ответ: 4

Ответ #3. Отвечает эксперт: Евгений В

Ну это не сложно. Смотря, конечно что ты хочешь сохранять в ini.
Если это например расположение объекта на экране или размеры, то можно просто сохранять в него целые числа расположения, размеров и т.п. В приложении смотри упрощённый пример (из одной статьи).
А вообще посмотри вот эту инфу из одной статьи, может пригодится:

Constructor Create('d:\test.INI');
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации.

WriteBool(const Section, Ident: string; Value: Boolean);
Присвоить элементу с именем Ident раздела Section значение типа boolean

WriteInteger(const Section, Ident: string; Value: Longint);
Присвоить элементу с именем Ident раздела Section значение типа Longint

WriteString(const Section, Ident, Value: string);
Присвоить элементу с именем Ident раздела Section значение типа String

ReadSection (const Section: string; Strings: TStrings);
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются)

ReadSectionValues(const Section: string; Strings: TStrings);
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат :
имя_переменной = значение

EraseSection(const Section: string);
Удалить раздел Section со всем содержимым

ReadBool(const Section, Ident: string; Default: Boolean): Boolean;
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

ReadInteger(const Section, Ident: string; Default: Longint): Longint;
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.

Free;
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом

Property Values[const Name: string]: string;
Доступ к существующему параметру по имени Name

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

Приложение:
  1. IniFile:TIniFile;
  2.  
  3. IniFile := TIniFile.Create('d:test.INI'); { Создали экземпляр объекта }
  4.  
  5. IniFile.WriteInteger('Options', 'Level', 3); {записали значение в поле}
  6.  
  7. IniFile.Free; {Закрыли файл, уничтожили объект и освободили память }
  8.  
  9.  


Ответ отправил: Евгений В (статус: 1-ый класс)
Время отправки: 19 июня 2006, 22:49
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 20 июня 2006, 00:21; участников в обсуждении: 1.
feenords

feenords (статус: 1-ый класс), 20 июня 2006, 00:21 [#1]:

Ничего нового не узнал...
Но всё равно спасибо...
А дополнительные цвета по умолчанию не сохраняются - проверял...
Сообщения пишуться только после всех выставленных оценок (админу...)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.03 сек.