Difference between revisions of "TXMLPropStorage/ru"

From Lazarus wiki
Jump to navigationJump to search
 
(19 intermediate revisions by 8 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" палитры компонентов.
 
  
 
== Использование ==
 
== Использование ==
Line 13: Line 14:
 
Ваше приложение теперь будет читать выбранное значение свойства в session.xml и применять его во время выполнения (такие как Width, Height, Left, Top для TForm).
 
Ваше приложение теперь будет читать выбранное значение свойства в session.xml и применять его во время выполнения (такие как Width, Height, Left, Top для TForm).
  
Компонент TINIPropStorage работает так же, как и TXMLPropStorage, но кроме этого хранит и информацию о сеансе в [http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html IniFile].
+
Компонент TINIPropStorage работает так же, как и TXMLPropStorage, но дополнительно хранит информацию о сеансе в [http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html IniFile].
  
 
== Свойство StoredValues ==
 
== Свойство StoredValues ==
У TINIPropStorage и TXMLPropStorage есть свойство "StoredValues", которое сохраняет некоторые значения (это бывает полезно, если вы не хотите использовать никакие файлы конфигурации)...
+
У [[TINIPropStorage]] и TXMLPropStorage есть свойство ''StoredValues'', которое сохраняет некоторые значения (это бывает полезно, если вы не хотите использовать файлы конфигурации).
  
* Why is this really util?
+
Где это свойство может быть реально полезно?
*# Some properties (as CheckGroup.Item[n].Checked) cannot be saved in SessionProperties of TForm, then you need do this manually. It's useful to save others settings informations too.
+
* Некоторые свойства (такие как CheckGroup.Item[n].Checked), не могут быть сохранены в TForm.SessionProperties и тогда Вы должны сделать это вручную. Полезно сохранить и другую информацию о параметрах настройки.
  
Let's write a simple demo:
+
Давайте напишем простую демонстрашку:
  
* Run Lazarus and start a new application;
+
* Запустите Lazarus и создайте новое приложение;
* Drop a TXMLPropStorage and TCheckGroup component;
+
* Положите на форму компоненты TXMLPropStorage и TCheckGroup;
* Add one item in TCheckGroup (Item Test);
+
* Добавьте одну строку в TCheckGroup (Test);
* Click in XMLPropStorage1 and access StoredValues property editor;
+
* Кликните по XMLPropStorage1 и откройте в свойстве StoredValues редактор;
* Add a new value with name = item0_checked and value = -1 (True = -1);
+
* Добавить новое значение, установите его имя(name) = item0_checked и value = -1 (True = -1);
* In OnShow event add this code:
+
* В событие OnShow добавьте этот код:
<delphi>
+
<syntaxhighlight lang=pascal>
 
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
 
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
</delphi>
+
</syntaxhighlight>
* In OnClose event add this code:
+
* В событие OnClose добавьте такой код:
<delphi>
+
<syntaxhighlight lang=pascal>
 
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
 
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
</delphi>
+
</syntaxhighlight>
* Run the demo program, change checked property of TCheckGroup.Items[n] and close form. Your changes was saved? :)
+
* Запустите демонстрашку, смените свойство TCheckGroup.Items[n] и закройте форму. Ваши изменения сохранились? :)
  
You can change ''Key'' property of StoredValues.Items[n] if you're saving some information confidential (it uses XOREncode and XORDecode functions of RTL on saving and restoring routines).
+
Вы можете изменить свойство "Key" у StoredValues.Items[n] если Вы сохраняете небольшое количество информации (используя функции XOREncode и XORDecode из RTL при сохранении и восстановлении).
  
 
== Замечания ==
 
== Замечания ==
 +
У TXMLPropStorage есть заданный по умолчанию обработчик, если Вы сами не задаёте имя файла.
 +
Под Windows/MacOS значения сохраняются в каталоге приложения как "ИМЯ_ПРОГРАММЫ.xml".
 +
 +
Под Unix-подобными системами настройки сохраняются в домашнем каталоге текущего пользователя под именем ".ИМЯ_ПРОГРАММЫ".
 +
Это очень хорошая идея, чтобы оставлять имя файла пустым для UNIX-программ, которые будут запускаться обычными пользователями.
  
TXMLPropStorage has a default handler if you don't set a filename.
+
Согласно сообщению об ошибках [http://bugs.freepascal.org/view.php?id=13949 13949,  28856]:
Under Windows/MacOS the settings will be saved in the application directory as PROGRAMNAME.xml.
+
#"Массив StoredValues[] может использоваться только в событиях OnRestoreProperties или OnSaveProperties. Вне этих событий значения сохранятся не будут",
 +
#"Если Вы хотите сохранить/загрузиться значения, которые не являются "published" свойствами компонента или элемента управления, Вы должны сохранять их в событии OnSaveProperties и загружать их используя событие OnRestoreProperties."
  
Under Unix likes it will be saved in the home directory of the current user as .PROGRAMNAME
+
== См.также ==
  
It is therefore a very good idea to leave the filename blank for unix programs meant to be run by normal users.
+
* [[doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage doc]]
 +
* [[doc:lcl/forms/tform.sessionproperties.html|SessionProperties doc]]
 +
* [[Hardware Access]]
  
According to bug report [http://bugs.freepascal.org/view.php?id=13949 13949, note 28856]: "The StoredValues[] array can only be used during the OnRestoreProperties or OnSaveProperties events. Outside these events, the values will not be stored." and "If you want to save/load values that are not published properties of a component or control, you should save them in a OnSaveProperties event, and
+
{{LCL Components/ru}}
load them using the OnRestoreProperties event."
 
----
 
[[Hardware Access]]
 

Latest revision as of 15: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