Ir para conteúdo
Fórum Script Brasil
  • 0

Como guardar o último estado do Form?


Duduh_Capixaba

Pergunta

Olá pessoas! Eis meu problema...

Estou tentando construir um Form onde o estado da janela (maximizado, minimizado...) vai depender do último acesso do usuário, por exemplo: se o usuário sair do programa com a tela maximizada, então, no próximo acesso ao programa o Form estará maximizado. Eis meu código:

ao entrar:

procedure TForm1.FormCreate(Sender: TObject);
var
  R: TRegistry;

begin
  R := TRegistry.Create;
  R.RootKey := HKEY_LOCAL_MACHINE;

  if R.OpenKey('\SOFTWARE\TESTE\CONFIG\', True) then begin
    if not R.ValueExists('StatusTela') then
      R.WriteString('StatusTela', 'wsNormal');
  end;

  Self.WindowState := R.ReadString('StatusTela');
  R.CloseKey;
  R.Free;
end;
ao sair:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  R: TRegistry;

begin
  R := TRegistry.Create;
  R.RootKey := HKEY_LOCAL_MACHINE;
  R.OpenKey('\SOFTWARE\TESTE\CONFIG\', False);
  R.WriteString('StatusTela', Self.WindowState);
  R.CloseKey;
  R.Free;
end;

O erro ao compilar aponta para as linhas "Self.WindowState := R.ReadString('StatusTela')" e "R.WriteString('StatusTela', Self.WindowState)": Incompatible types: 'TWindowState' and 'TStringField'. Não sei como converter esses dois tipos. Alguém pode dar uma mão?

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Cheguei a uma solução:

Primeiro declarei uma variável dentro do Form com o nome WinSt, depois:

procedure TForm1.FormCreate(Sender: TObject);
var
  R: TRegistry;

begin
  R := TRegistry.Create;
  R.RootKey := HKEY_LOCAL_MACHINE;

  if R.OpenKey('\SOFTWARE\TESTE\CONFIG\', True) then begin
    if not R.ValueExists('StatusTela') then
      R.WriteString('StatusTela', 'Normal');
  end;
  WinSt := R.ReadString('StatusTela');

  if WinSt = 'Normal' then
    Self.WindowState := wsNormal;

  if WinSt = 'Maximizado' then
    Self.WindowState := wsMaximized;
  
  R.CloseKey;
  R.Free;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  R: TRegistry;

begin
  if Self.WindowState = wsNormal then
    WinSt := 'Normal';

  if Self.WindowState = wsMaximized then
    WinSt := 'Maximizado';

  R := TRegistry.Create;
  R.RootKey := HKEY_LOCAL_MACHINE;
  R.OpenKey('\SOFTWARE\TESTE\CONFIG\', False);

  if R.ReadString('StatusTela') <> WinSt then begin
    if Self.WindowState = wsNormal then
      R.WriteString('StatusTela', 'Normal');

    if Self.WindowState = wsMaximized then
      R.WriteString('StatusTela', 'Maximizado');
  end;

  R.CloseKey;
  R.Free;
end;

Pronto! Assim consigo gravar no registro do Windows o estado em que o Form foi fechado, e quando for reaberto, voltará com a última configuração. Vlw!

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...