Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.23;
Скачать: CL | DM;

Вниз

Как сохранить/считать значение TMemuItem?   Найти похожие ветки 

 
Stepper   (2008-02-27 06:11) [0]

При закрытии/открытии приложения! К примеру в ini-файле!


 
Смирнов   (2008-02-27 06:15) [1]

смотри методы TIniFile


 
Stepper   (2008-02-27 07:05) [2]

function ReadIni(ASection, AString: string): string;
var
sIniFile: TIniFile;
sPath: string[60];
const
S = "xyz"; { стандартная строка для выдачи ошибок чтения }
begin
GetDir(0, sPath); { текущий каталог }
sIniFile := TIniFile.Create(sPath + "\Name.INI");
Result := sIniFile.ReadString(ASection, AString, S); { [Section] String=Value}
sIniFile.Free;
end;

procedure WriteIni(ASection, AString, AValue: string);
var
sIniFile: TIniFile;
sPath: string[60];
begin
GetDir(0, sPath); { текущий каталог }
sIniFile := TIniFile.Create(sPath + "\Name.INI");
sIniFile.WriteString(ASection, AString, AValue); { [Section] String=Value }
sIniFile.Free;
end;


Как сие Использовать применительно к TMemuItem?


 
Семеныч   (2008-02-27 07:12) [3]

> Stepper   (27.02.08 06:11)

В INI-файле информация хранится в таком формате:

[имя_секции]
параметр=значение
параметр=значение
...

Пусть имя секции - это имя TMenuItem, параметры - это имена его свойств, а значения - соответственно, значения этих свойств. Тогда, задача решается очень просто: читаем параметры в секции с известным именем и выставляем свойствам TMenuItem прочитанные (как строки) значения.

Перед присвоением значения придется преобразовывать его строковое представление к нужному типу. Функции преобразования называются StrToXxx (StrToInt и т.п.), а чтобы определить, какую из них нужно вызвать, надо определить тип свойства. Для этого можно использовать PropType из модуля TypInfo, а для установки свойства по его строковому имени удобно использовать функции SetXxxProp (SeOrdProp и т.п.) из того же модуля.

Остальное нужно действительно посмотреть в справке по TIniFile или TRegIniFile. И еще в исходниках модуля TypInfo.


 
Stepper   (2008-02-27 09:13) [4]

Вот использую сие и все нормально Записывает/Считывает в/из Ini-фаил


procedure WriteIniDataBool(Section, Ident : string; Value : boolean);
begin
IniFile := TIniFile.Create(Path + "\config.ini");
IniFile.WriteBool(Section, Ident, Value);
IniFile.Free;
end;

function ReadIniDataBool(Section, Ident : string; Default : boolean = false) : boolean;
begin
IniFile := TIniFile.Create(Path + "\config.ini");
Result := IniFile.ReadBool(Section, Ident, Default);
IniFile.Free;

end;


Использую...


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
...
 if N1.Checked = true Then
 WriteIniDataBool("Menu", "AutoSave", True) else
 WriteIniDataBool("Menu", "AutoSave", False);
...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
...
 if ReadIniDataBool("Menu", "AutoSave", True) then
 N1.Checked := True else N1.Checked := False;
...
end;


Правильно или можно оптимизировать?


 
Stepper   (2008-02-27 09:29) [5]

Вместо N1.Checked я использую N1.AutoCheck и всеравно тот же результат!

В ini пишет не зависимо от AutoCheck следующее

[Menu]
AutoSave=1


Что по незнанию я не правильно пишу?



Страницы: 1 вся ветка

Текущий архив: 2008.03.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1202801091
needhelp
2008-02-12 10:24
2008.03.23
борьба с adWare/SpyWare


2-1203588616
mrfreeman2007
2008-02-21 13:10
2008.03.23
Кодовая страница Windows


15-1202598877
Ламот
2008-02-10 02:14
2008.03.23
Прошу помощи в выборе системы видеонаблюдения.


3-1193746119
Dust
2007-10-30 15:08
2008.03.23
TADOQuery неопознанная ошибка


2-1204026234
FishNode
2008-02-26 14:43
2008.03.23
GetTextExtentPoint32