Sign in Join
Wiki copytemporary

TINIPropStorage/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11TINIPropStorage является компонентом, нужен он для того, чтобы сохранить выбранные свойства или восстановить их (либо TForm или любого элемента управления на нем). Он работает со свойством TForm.SessionProperties. Вы можете найти его на вкладке **Misc** на панели компонентов.
22
33[[doc:lcl/inipropstorage/tinipropstorage.html|TINIPropStorage]] работает так же, как и [[TXMLPropStorage/ru|TXMLPropStorage]], отличие его в том что он сохраняет все в [INI-file](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html) файле.
44
55Для получения более подробной информации и примеров смотрите сюда [[TXMLPropStorage/ru|TXMLPropStorage]].
66
77И так, проще говоря, мы сохраняем настройки формы и других элементов в ini файл. Это очень удобно и щас я покажу это на примере.
88
99Задача: Сохранить ширину колонок в таблице (в моем примере DBGrid) и потом при запуске программы восстановить её.
1010
1111При закрытие формы (FormClose) пишим код: with Form1.IniPropStorage1 do
1212
13-`       begin`\
14-`         IniSection:='DBGrid1_Column';`\
15-`         WriteInteger('Column_0', DBGrid.Columns.Items[0].Width);`\
16-`         WriteInteger('Column_1', DBGrid.Columns.Items[1].Width);`\
17-`         WriteInteger('Column_2', DBGrid.Columns.Items[2].Width);`\
18-`       end;`
13+``` pascal
14+ begin
15+ IniSection:='DBGrid1_Column';
16+ WriteInteger('Column_0', DBGrid.Columns.Items[0].Width);
17+ WriteInteger('Column_1', DBGrid.Columns.Items[1].Width);
18+ WriteInteger('Column_2', DBGrid.Columns.Items[2].Width);
19+ end;
20+```
1921
2022DBGrid1_Column - Это раздел/секция в ini файле (внизу покажу пример ini файла). Этих разделов может быть много. WriteInteger('Имя_Колонки', значение) - Это аналогично тому имя_переменной = значение. Вот и все. Мы сохранили в ini файл данные. Все довольно просто.
2123
2224Теперь надо их считать и установить при запуске формы в таблицу.
2325
2426При создании формы (FormCreate) пишим код: with Form1.IniPropStorage1 do
2527
26-`   begin`\
27-`     IniSection:='DBGrid1_Column';`\
28-`     DBGrid1.Columns.Items[0].Width:=ReadInteger('Column_0', 20);`\
29-`     DBGrid1.Columns.Items[1].Width:=ReadInteger('Column_1', 20);`\
30-`     DBGrid1.Columns.Items[2].Width:=ReadInteger('Column_2', 20);`\
31-`   end;        `
28+``` pascal
29+ begin
30+ IniSection:='DBGrid1_Column';
31+ DBGrid1.Columns.Items[0].Width:=ReadInteger('Column_0', 20);
32+ DBGrid1.Columns.Items[1].Width:=ReadInteger('Column_1', 20);
33+ DBGrid1.Columns.Items[2].Width:=ReadInteger('Column_2', 20);
34+ end;
35+```
3236
3337IniSection:='DBGrid1_Column' - Считываем раздел DBGrid1_Column который создали выше. DBGrid1.Columns.Items\[0\].Width - Получаем ширину колонки в данном случае нулевой. ReadInteger('Имя_колонки', значение_по_умолчанию_если_нет_значения_у_переменной) - Имя колонки из примера Column_0 и Второй парамент это значение по умолчанию. В нашем примере это 20 пикселей ширина колонки если вдруг не будет у переменной значения. Хотя у нас такого не будет =)
3438
3539В других случаях можно задавать текст в значение по умолчанию или какие то свои переменные, если в ini файле случайно не будет стоять на против переменно значение.
3640
3741Вот и все. Мы загрузили из ini файла переменные и значения.
3842
3943Пример получившегося ini файла: \[DBGrid1_Column\] Column_0=69 Column_1=114 Column_2=74
4044
4145\[DBGrid1_Column\] - название раздела/секции Column_0=69 - Наша переменная Column_0 и значение 69 пикселей ширина нулевой колонки (она же первая но т.к.счет идет с нуля то нулевая)
4246
4347[[Hardware Access]]
4448
4549---
4650*From the Free Pascal wiki, page "TINIPropStorage/ru", as it stood on 2016-12-28 after a change by Amber, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history