sexta-feira, 19 de março de 2010

Criando Janelas

Falei em meu primeiro post que em Delphi não dava para se fazer muita cois aque valesse a pena.
Continuo achando isso, mas apenas para não dizerem que sou preconceituoso, segue um código que cria uma janela de mensagem, para que não seja necessário utilizar o já famoso showmessage:

Classe da janela:

type
TMsgwindow=class(TForm)
private
fBtnok:TButton;
fLabelmessage:TLabel;
fMessage:string;
procedure Custombtnokclick(Sender:TObject);
public
procedure Create(sMessage:string);
end;

Implementação das funções:

procedure TMsgwindow.Create(sMessage: string);
begin
fMessage:=sMessage;
//Setando propriedades da janela
Self.BorderStyle:=bsDialog;
Self.Color:=clMoneyGreen;
Self.Position:=poOwnerFormCenter;
Self.Caption:='Mensagem';
Self.ClientHeight:=100;
Self.ClientWidth:=300;

//Setando propriedades do botão
fBtnok:=TButton.Create(Self);
fBtnok.Parent:=self;
fBtnok.Top:=50;
fBtnok.Left:=120;
fBtnok.Caption:='OK';
fBtnok.OnClick:=Custombtnokclick;

//Setando propriedades da label
fLabelmessage:=TLabel.Create(Self);
fLabelmessage.Parent:=Self;
fLabelmessage.Alignment:=taCenter;
fLabelmessage.Font.Size:=12;
fLabelmessage.Font.Style:=[fsBold];
fLabelmessage.Top:=20;
fLabelmessage.Left:=40;
fLabelmessage.Caption:=fMessage;
end;

procedure TMsgwindow.Custombtnokclick(Sender: TObject);
begin
Self.ModalResult:=mrOk;
end;


Chamando a janela:

procedure Showmsg;
begin
try
msgwindow:=TMsgwindow.CreateNew(Application.owner);
msgwindow.Create('Aviso');
msgwindow.ShowModal;
finally
FreeAndNil(msgwindow);
end;
end;

Quem diria.Delphi com classes! pois é...
É isso galera.Bons códigos ae!

2 comentários:

  1. Não entendi... qual o problema com o ShowMessage?

    E pq não só encapsular a API MessageBox do Windows em uma procedure? Daí, além de não ter o overhead de se instanciar um TForm, ela teria a aparência nativa do OS, fosse ele qual fosse (98, XP, Vista, 7...) e seria preciso apenas uma linha de código.

    Delphi não é ruim não, Antonio... as pessoas que não se aprofundam muito nele. Pense nisso.

    Abraços.

    ResponderExcluir
  2. Obrigado pelo comentário Ricardo.
    Essa classe de janela na verdade foi idéia de um colega meu qwue teve problemas com o showmessage e resolveu criar ela. Achei interessate a idéia de se ter um formulário sem dfm em Delphi e postei aqui.
    Quanto ao fato das pessoas não se aprofundarem em Delphi, acho que é por causa da ferramenta desencorajar qualquer tentativa nesse sentido.
    Abraços!

    ResponderExcluir