TXMLPropStorage/pt: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TXMLPropStorage/pt
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## Introdução | |
| 2 | + | ||
| 3 | + | TXMLPropStorage é um componente para salvar e restaurar propriedades selecionadas (de qualquer TForm ou quaisquer controle nele). Ele trabalha com a propriedade TFormTForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]]. Ele está disponível na guia **Misc** da paleta de componentes. | |
| 4 | + | ||
| 5 | + | ## Utilização | |
| 6 | + | ||
| 7 | + | 1. Jogue um componente [[doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage]] em um formulário e ajuste a propriedade filename, por exemplo: session.xml | |
| 8 | + | 2. Selecione o formulário, vá até o Object Inspector e abra a janela do editor para a propriedade [[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]] de TForm. | |
| 9 | + | 3. Adicione aqui propriedades do formulário e/ou controles a serem armazenadas dentro de session.xml (exemplo: width;height). | |
| 10 | + | 4. Compile a aplicação. | |
| 11 | + | ||
| 12 | + | Sua aplicação agora irá ler o valor das propriedades selecionadas do arquivo session.xml e aplicará elas em tempo de execução (como Width, Height, Left, Top para TForm). | |
| 13 | + | ||
| 14 | + | O componente TINIPropStorage funciona da mesma forma que TXMLPropStorage, exceto pelo fato de armazenar as informações de sessão em um arquivo do tipo [IniFile](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html). | |
| 15 | + | ||
| 16 | + | ## Propriedade StoredValues | |
| 17 | + | ||
| 18 | + | TINIPropStorage e TXMLPropStorage têm uma propriedade *StoredValues* que armazena algum valor (isso é útil para não usar outros arquivos de configuração)... | |
| 19 | + | ||
| 20 | + | - Por que isso é realmente útil? | |
| 21 | + | 1. Algumas propriedades (como CheckGroup.Item\[n\].Checked) não podem ser salvas no SessionProperties do TForm, então você precisa fazer isso manualmente. Isso é útil para salvar outras informações de configuração também. | |
| 22 | + | ||
| 23 | + | Vamos escrever uma simples demonstração: | |
| 24 | + | ||
| 25 | + | - Execute o Lazarus e inicie uma nova aplicação; | |
| 26 | + | - Jogue um componente TXMLPropStorage e TCheckGroup; | |
| 27 | + | - Adicione um item no TCheckGroup (Item Teste); | |
| 28 | + | - Click no XMLPropStorage1 e acesse o editor de propriedades para StoredValues; | |
| 29 | + | - Adicione um novo valor com name = item0_checked e value = -1 (True = -1); | |
| 30 | + | - No evento OnShow adicione esse código: | |
| 31 | + | ||
| 32 | + | ``` pascal | |
| 33 | + | CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']); | |
| 34 | + | ``` | |
| 35 | + | ||
| 36 | + | - No evento OnClose adicione esse código: | |
| 37 | + | ||
| 38 | + | ``` pascal | |
| 39 | + | XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]); | |
| 40 | + | ``` | |
| 41 | + | ||
| 42 | + | - Execute o programa demonstração, mude a propriedade checked de TCheckGroup.Items\[n\] e feche o formulário. Suas mudanças foram salvas? :) | |
| 43 | + | ||
| 44 | + | Você pode mudar a propriedade *Key* de StoredValues.Items\[n\] se você está salvando alguma informação confidencial (isso usa as funções da RTL XOREncode e XORDecode nas rotinas de salvamento e restauração). | |
| 45 | + | ||
| 46 | + | ## Notas | |
| 47 | + | ||
| 48 | + | TXMLPropStorage tem um manipulador padrão se você não ajustar um nome de arquivo. No Windows as configurações serão salvas no diretório da aplicação como PROGRAMNAME.xml. | |
| 49 | + | ||
| 50 | + | Nos Unix likes (FreeBSD, Linux, macOS) ela será salva em um diretório home do usuário atual como .PROGRAMNAME | |
| 51 | + | ||
| 52 | + | Por essa razão é uma boa idéia deixar o nome de arquivo em branco para programas unix que pretendem ser executados por usuários normais. | |
| 53 | + | ||
| 54 | + | --- | |
| 55 | + | *From the Free Pascal wiki, page "TXMLPropStorage/pt", as it stood on 2020-01-22 after a change by Trev, 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).* | |
| 56 | + | Category: Components/pt | |
| 57 | + | Category: Português |
