Fórum definir Caption em todos os forms #339805

03/04/2007

0

Olá...

Tem alguma forma de definir o caption de todos os forms da aplicação, sem ter que entrar em form por form para alterar individualmente cada um?

valeu!


José Alves

José Alves

Responder

Posts

03/04/2007

Janete

Se vc estiver criando seu projeto ainda, poderia criar um form padrão e sempre adcionar um novo item (File / New / Other), e vc abre esse formulário modelo que vc já tem, ele vai utilizar a classe do formulário modelo e sempre q alterar o formulário modelo vai alterar todos os outros que forem criados dessa forma através dele.

:D


Responder

Gostei + 0

04/04/2007

Adriano Santos

E se o projeto já estiver criado e rodando, vc pode criar uma função pra abrir o form e nesta função mudar o que quiser no form. Eu fiz isso aqui.

Se liga:

[quote:b0575d9b18=´Função AbrirForm´]
function AbrirForm(AForm: string; AShow: Integer = 0): TForm;
var
  Pc                          : TPersistentClass;
  frmChamado                  : TForm;
  I                           : Integer;
begin
  try
    Screen.Cursor := crHourGlass;
    {Procura a class o form passado por parâmetro}
    Pc := GetClass(´T´ + AForm);
    if (Pc <> nil) then
    begin
      frmChamado := nil;
      I := 0;
      {Procura pra saber se está aberto}
      while I < Screen.FormCount do
      begin
        if Screen.Forms[I] is Pc then
          frmChamado := Screen.Forms[I];
        Inc(I);
      end;
      {Se não instanciado cria.}
      if frmChamado = nil then
      begin
        try
          {Cria o form passado por parâmetro}
          frmChamado := TFormClass(Pc).Create(frmChamado);
          {Cria um evento onKeyDown pra ele}
          frmChamado.KeyPreview := True;
          frmChamado.OnKeyDown := frmAmerica.AdicionarAtalho;
          Result := frmChamado;
          case AShow of
            1: frmChamado.Show;
            2: frmChamado.ShowModal;
          end;
        except on E: Exception do
          begin
            MessageDlg(´Ocorreu um erro ao carregar esta função.´ + #13 +
              ´Erro original: ´ + 1313 +
              E.Message, mtWarning, [mbOk], 0);
            Result := nil;
            Exit;
          end;
        end;
      end
        {Se instanciado da Show ou ShowModal}
      else
      begin
        case AShow of
          1: frmChamado.Show;
          2: frmChamado.ShowModal;
        end;
        Result := frmChamado;
      end;
    end
    else
    begin
      MessageDlg(´Ocorreu um erro ao carregar esta função.´ + #13 +
        ´Janela: ´ + AForm, mtWarning, [mbOk], 0);
      Result := nil;
    end;
    Screen.Cursor := crDefault;
  except
    Result := nil;
  end;
end;

[/quote:b0575d9b18]

[quote:b0575d9b18=´Chamada de um form qualquer´]
AbrirForm(´frmCadastroCliente´, 2);

[/quote:b0575d9b18]

A única exigência é incluir ao final de cada form, na unit, o registro da classe, assim:

[quote:b0575d9b18=´Registrando a class´]
Initialization
  Classes.RegisterClass(TfrmCadastroCliente)
Finalization
  Classes.UnRegisterClass(TfrmCadastroCliente)

[/quote:b0575d9b18]
Neste último caso fiz um programa que lê todos os arquivos .pas de uma determinada pasta, abre o arquivo.pas, insere estas duas linhas e salva. Assim não precisa entrar um por um.
Usando esta técnica tb é possível fazer um softwarezinho que abre o arquivo DFM e faz mudança do caption pra vc. É só ver qual melhor solução.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar