Difference between revisions of "TXMLPropStorage/ru"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
(20 intermediate revisions by 6 users not shown)
Line 3: Line 3:
 
== Введение ==
 
== Введение ==
  
TXMLPropStorage - это компонент для того, чтобы сохранять и восстанавливать выбранные свойства (TForm или любого элемента управление на нем). Это работает совместно со свойством  TForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]]. Оно доступно на вкладке "Misc" палитры компонентов.
+
TXMLPropStorage - это компонент для того, чтобы сохранять и восстанавливать выбранные свойства (TForm или любого элемента управление на нем). Данный компонент работает совместно со свойством  TForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]]. Он доступен на вкладке "Misc" палитры компонентов.
 +
[[File:KomponentenpaletteTXMLPropStorage.png]]
  
== Usage ==
+
== Использование ==
# Положите компонент [doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage] на форму и установите свойство "filename" в, например, 'session.xml'.
+
# Положите компонент [[doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage]] на форму и установите свойство "filename" в, например, 'session.xml'.
# Выберите форму, зайдите в Инспектор Объектов и откройте окно редактора у свойства TForm.[doc:lcl/forms/tform.sessionproperties.html|SessionProperties].
+
# Выберите форму, зайдите в Инспектор Объектов и откройте окно редактора у свойства TForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]].
 
# Добавьте здесь свойства формы и/или элемента управлений, которые будут сохранены внутри session.xml (пример: width;height).
 
# Добавьте здесь свойства формы и/или элемента управлений, которые будут сохранены внутри session.xml (пример: width;height).
 
# Скомпилируйте приложение.
 
# Скомпилируйте приложение.
  
Ваше приложение теперь будет читать выбранное значение свойства в session.xml и применять его во время выполнения
+
Ваше приложение теперь будет читать выбранное значение свойства в session.xml и применять его во время выполнения (такие как Width, Height, Left, Top для TForm).
(такие как 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 property ==
+
== Свойство StoredValues ==
TINIPropStorage and TXMLPropStorage has a ''StoredValues'' property which stores some value (it's useful to uses no others configs file)...
+
У 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 при сохранении и восстановлении).
  
== Notes ==
+
== Замечания ==
 +
У TXMLPropStorage есть заданный по умолчанию обработчик, если Вы сами не задаёте имя файла.
 +
Под Windows/MacOS значения сохраняются в каталоге приложения как "ИМЯ_ПРОГРАММЫ.xml".
  
TXMLPropStorage has a default handler if you don't set a filename.
+
Под Unix-подобными системами настройки сохраняются в домашнем каталоге текущего пользователя под именем ".ИМЯ_ПРОГРАММЫ".
Under Windows/MacOS the settings will be saved in the application directory as PROGRAMNAME.xml.
+
Это очень хорошая идея, чтобы оставлять имя файла пустым для UNIX-программ, которые будут запускаться обычными пользователями.
  
Under Unix likes it will be saved in the home directory of the current user as .PROGRAMNAME
+
Согласно сообщению об ошибках [http://bugs.freepascal.org/view.php?id=13949 13949,  28856]:
 +
#"Массив StoredValues[] может использоваться только в событиях OnRestoreProperties или OnSaveProperties. Вне этих событий значения сохранятся не будут",
 +
#"Если Вы хотите сохранить/загрузиться значения, которые не являются "published" свойствами компонента или элемента управления, Вы должны сохранять их в событии OnSaveProperties и загружать их используя событие OnRestoreProperties."
  
It is therefore a very good idea to leave the filename blank for unix programs meant to be run by normal users.
+
{{LCL Components/ru}}
 
 
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
 
load them using the OnRestoreProperties event."
 
----
 
[[Hardware Access]]
 

Revision as of 02:25, 2 March 2020

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

Введение

TXMLPropStorage - это компонент для того, чтобы сохранять и восстанавливать выбранные свойства (TForm или любого элемента управление на нем). Данный компонент работает совместно со свойством TForm.SessionProperties. Он доступен на вкладке "Misc" палитры компонентов. KomponentenpaletteTXMLPropStorage.png

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

  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