Difference between revisions of "TXMLPropStorage/ru"

From Free Pascal wiki
Jump to navigationJump to search
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{TXMLPropStorage}}
 
{{TXMLPropStorage}}
  
== Введение ==
+
[[File:KomponentenpaletteTXMLPropStorage.png]]
 +
 
 +
'''TXMLPropStorage''' [[image: txmlpropstorage.png]] - это компонент для сохранения и восстановления выбранных свойств (либо [[TForm/ru|TForm]], либо любого элемента управления на нем). Он работает со свойством <code>TForm.SessionProperties</code>. Он доступен на [[Misc_tab/ru|вкладке Разное]] в [[Component_Palette/ru|Палитре компонентов]].
  
TXMLPropStorage - это компонент для того, чтобы сохранять и восстанавливать выбранные свойства (TForm или любого элемента управление на нем). Данный компонент работает совместно со свойством  TForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]]. Он доступен на вкладке "Misc" палитры компонентов.
 
[[File:KomponentenpaletteTXMLPropStorage.png]]
 
  
 
== Использование ==
 
== Использование ==
Line 17: Line 17:
  
 
== Свойство StoredValues ==
 
== Свойство StoredValues ==
У TINIPropStorage и TXMLPropStorage есть свойство "StoredValues", которое сохраняет некоторые значения (это бывает полезно, если вы не хотите использовать файлы конфигурации).
+
У [[TINIPropStorage]] и TXMLPropStorage есть свойство ''StoredValues'', которое сохраняет некоторые значения (это бывает полезно, если вы не хотите использовать файлы конфигурации).
  
 
Где это свойство может быть реально полезно?
 
Где это свойство может быть реально полезно?
Line 30: Line 30:
 
* Добавить новое значение, установите его имя(name) = item0_checked и value = -1 (True = -1);
 
* Добавить новое значение, установите его имя(name) = item0_checked и value = -1 (True = -1);
 
* В событие OnShow добавьте этот код:
 
* В событие OnShow добавьте этот код:
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
 
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
 
</syntaxhighlight>
 
</syntaxhighlight>
 
* В событие OnClose добавьте такой код:
 
* В событие OnClose добавьте такой код:
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
 
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 51: Line 51:
 
#"Массив StoredValues[] может использоваться только в событиях OnRestoreProperties или OnSaveProperties. Вне этих событий значения сохранятся не будут",  
 
#"Массив StoredValues[] может использоваться только в событиях OnRestoreProperties или OnSaveProperties. Вне этих событий значения сохранятся не будут",  
 
#"Если Вы хотите сохранить/загрузиться значения, которые не являются "published" свойствами компонента или элемента управления, Вы должны сохранять их в событии OnSaveProperties и загружать их используя событие OnRestoreProperties."
 
#"Если Вы хотите сохранить/загрузиться значения, которые не являются "published" свойствами компонента или элемента управления, Вы должны сохранять их в событии OnSaveProperties и загружать их используя событие OnRestoreProperties."
 +
 +
== См.также ==
 +
 +
* [[doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage doc]]
 +
* [[doc:lcl/forms/tform.sessionproperties.html|SessionProperties doc]]
 +
* [[Hardware Access]]
  
 
{{LCL Components/ru}}
 
{{LCL Components/ru}}
{{AutoCategory}}
 
[[Category:LCL/ru]]
 
[[Category:Components/ru]]
 
[[Category:XML/ru]]
 

Latest revision as of 14:26, 24 July 2021

Deutsch (de) English (en) español (es) français (fr) polski (pl) português (pt) русский (ru)

KomponentenpaletteTXMLPropStorage.png

TXMLPropStorage txmlpropstorage.png - это компонент для сохранения и восстановления выбранных свойств (либо TForm, либо любого элемента управления на нем). Он работает со свойством TForm.SessionProperties. Он доступен на вкладке Разное в Палитре компонентов.


Использование

  1. Положите компонент TXMLPropStorage на форму и установите свойство "filename" в, например, 'session.xml'.
  2. Выберите форму, зайдите в Инспектор Объектов и откройте окно редактора у свойства TForm.SessionProperties.
  3. Добавьте здесь свойства формы и/или элемента управлений, которые будут сохранены внутри session.xml (пример: width;height).
  4. Скомпилируйте приложение.

Ваше приложение теперь будет читать выбранное значение свойства в session.xml и применять его во время выполнения (такие как Width, Height, Left, Top для TForm).

Компонент TINIPropStorage работает так же, как и TXMLPropStorage, но дополнительно хранит информацию о сеансе в IniFile.

Свойство StoredValues

У TINIPropStorage и TXMLPropStorage есть свойство StoredValues, которое сохраняет некоторые значения (это бывает полезно, если вы не хотите использовать файлы конфигурации).

Где это свойство может быть реально полезно?

  • Некоторые свойства (такие как CheckGroup.Item[n].Checked), не могут быть сохранены в TForm.SessionProperties и тогда Вы должны сделать это вручную. Полезно сохранить и другую информацию о параметрах настройки.

Давайте напишем простую демонстрашку:

  • Запустите Lazarus и создайте новое приложение;
  • Положите на форму компоненты TXMLPropStorage и TCheckGroup;
  • Добавьте одну строку в TCheckGroup (Test);
  • Кликните по XMLPropStorage1 и откройте в свойстве StoredValues редактор;
  • Добавить новое значение, установите его имя(name) = item0_checked и value = -1 (True = -1);
  • В событие OnShow добавьте этот код:
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
  • В событие OnClose добавьте такой код:
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
  • Запустите демонстрашку, смените свойство TCheckGroup.Items[n] и закройте форму. Ваши изменения сохранились? :)

Вы можете изменить свойство "Key" у StoredValues.Items[n] если Вы сохраняете небольшое количество информации (используя функции XOREncode и XORDecode из RTL при сохранении и восстановлении).

Замечания

У TXMLPropStorage есть заданный по умолчанию обработчик, если Вы сами не задаёте имя файла. Под Windows/MacOS значения сохраняются в каталоге приложения как "ИМЯ_ПРОГРАММЫ.xml".

Под Unix-подобными системами настройки сохраняются в домашнем каталоге текущего пользователя под именем ".ИМЯ_ПРОГРАММЫ". Это очень хорошая идея, чтобы оставлять имя файла пустым для UNIX-программ, которые будут запускаться обычными пользователями.

Согласно сообщению об ошибках 13949, 28856:

  1. "Массив StoredValues[] может использоваться только в событиях OnRestoreProperties или OnSaveProperties. Вне этих событий значения сохранятся не будут",
  2. "Если Вы хотите сохранить/загрузиться значения, которые не являются "published" свойствами компонента или элемента управления, Вы должны сохранять их в событии OnSaveProperties и загружать их используя событие OnRestoreProperties."

См.также


Компоненты LCL
Вкладка Компоненты
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHttpDataProvider • TIpHtmlPanel