Difference between revisions of "TXMLPropStorage/pt"
m (Text replace - "delphi>" to "syntaxhighlight>") |
|||
Line 29: | Line 29: | ||
* Adicione um novo valor com name = item0_checked e value = -1 (True = -1); | * Adicione um novo valor com name = item0_checked e value = -1 (True = -1); | ||
* No evento OnShow adicione esse código: | * No evento OnShow adicione esse código: | ||
− | < | + | <syntaxhighlight> |
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']); | CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']); | ||
− | </ | + | </syntaxhighlight> |
* No evento OnClose adicione esse código: | * No evento OnClose adicione esse código: | ||
− | < | + | <syntaxhighlight> |
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]); | XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]); | ||
− | </ | + | </syntaxhighlight> |
* Execute o programa demonstração, mude a propriedade checked de TCheckGroup.Items[n] e feche o formulário. Suas mudanças foram salvas? :) | * Execute o programa demonstração, mude a propriedade checked de TCheckGroup.Items[n] e feche o formulário. Suas mudanças foram salvas? :) | ||
Revision as of 16:01, 24 March 2012
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
polski (pl) │
português (pt) │
русский (ru) │
Introdução
TXMLPropStorage é um componente para salvar e restaurar propriedades selecionadas (de qualquer TForm ou quaisquer controle nele). Ele trabalha com a propriedade TFormTForm.SessionProperties. Ele está disponível na guia Misc da paleta de componentes.
Utilização
- Jogue um componente TXMLPropStorage em um formulário e ajuste a propriedade filename, por exemplo: session.xml
- Selecione o formulário, vá até o Object Inspector e abra a janela do editor para a propriedade SessionProperties de TForm.
- Adicione aqui propriedades do formulário e/ou controles a serem armazenadas dentro de session.xml (exemplo: width;height).
- Compile a aplicação.
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).
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.
Propriedade StoredValues
TINIPropStorage e TXMLPropStorage têm uma propriedade StoredValues que armazena algum valor (isso é útil para não usar outros arquivos de configuração)...
- Por que isso é realmente útil?
- 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.
Vamos escrever uma simples demonstração:
- Execute o Lazarus e inicie uma nova aplicação;
- Jogue um componente TXMLPropStorage e TCheckGroup;
- Adicione um item no TCheckGroup (Item Teste);
- Click no XMLPropStorage1 e acesse o editor de propriedades para StoredValues;
- Adicione um novo valor com name = item0_checked e value = -1 (True = -1);
- No evento OnShow adicione esse código:
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
- No evento OnClose adicione esse código:
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);
- Execute o programa demonstração, mude a propriedade checked de TCheckGroup.Items[n] e feche o formulário. Suas mudanças foram salvas? :)
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).
Notas
TXMLPropStorage tem um manipulador padrão se você não ajustar um nome de arquivo. No Windows/MacOS as configurações serão salvas no diretório da aplicação como PROGRAMNAME.xml.
Nos Unix likes ela será salva em um diretório home do usuário atual como .PROGRAMNAME
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.