CASSIC
Primeiro Componente

  O componente que iremos criar será do tipo não visual, ele terá algumas propriedades e um método para simular a tela de diálogo MessageDlg.  Caso tenha algum projeto aberto feche, em seguida clique no menu Componet > New VCL Component (Figura 1).


Figura 1 – Menu New VCL Component

  No primeiro passo do Wizard de criação de componente (Figura 2) escolha a opção VCL for Delphi Win32 e clique no botão Next.


Figura 2 – Opção VCL for Delphi Win32

  Agora o Wizard está pedindo o componente ancestral, em outras palavras, o componente que dará origem ao nosso novo componente.  Escolha a opção TComponent (Figura 3) e em seguida clique em Next.


Figura 3 – Escolha do componente ancestral

  Neste ponto (Figura 4) informe o nome da nova classe (Class Name) como TMensagemDLG. A guia da Tool Palette que o componente ficará (Pallete Page) terá o nome de CursoDelphi e o nome da Unit que conterá o código fonte do nosso componente (Unit File Name) será "MensagemDLG.pas". Clique no botão Next.


Figura 4 – Dados do componente

  Na ultima janela (Figura 5) apenas clique no botão Finish.


Figura 5 – Finalizando o Wizard

  Neste ponto o BDS nos abre o Code Editor já com algum código implementado. Inclua os códigos em negrito da listagem abaixo e depois pressione Ctrl+Shift+C:

01
unit MensagemDLG;
02
 
03
interface
04
 
05
uses
06
   SysUtils, Classes, Forms, Dialogs, StdCtrls, Controls;
07
 
08
type
09
   TMensagemDLG = class(TComponent)
10
   Private
11
       { Private declarations }
12
   Protected
13
       { Protected declarations }
14
   Public
15
       { Public declarations }
16
       constructor Create(AOwner: TComponent); override;
17
       destructor Destroy; override;
18
       function MostrarMsg: Integer;
19
   published
20
       { Published declarations }
21
       property Titulo: string;
22
       property Msg: string;
23
       property DLGTipo: TMsgDlgType;
24
       property Botoes: TMsgDlgButtons;
25
       property TituloPadrao: Boolean;
26
   end;
27
 
28
procedure Register;
29
 
30
implementation
31
 
32
procedure Register;
33
begin
34
   RegisterComponents('CursoDelphi', [TMensagemDLG]);
35
end;
36
 
37
end.

     No método MostrarMsg entre com o código abaixo e salve tudo:

01
function TMensagemDLG.MostrarMsg: Integer;
02
var
03
   Cont: Integer;
04
   CaptionForm: string;
05
   FrmMsg: TForm;
06
begin
07
   if not( FTituloPadrao ) and ( Trim(FTitulo) <> '' )
08
       then CaptionForm := FTitulo
09
   else
10
       begin
11
           case FDLGTipo of
12
               mtWarning: CaptionForm := 'Cuidado';
13
               mtError: CaptionForm := 'Erro';
14
               mtInformation: CaptionForm := 'Informação';
15
               mtConfirmation: CaptionForm := 'Confirmação';
16
               mtCustom: CaptionForm := Application.Title;
17
           end;
18
       end;
19
   FrmMsg := CreateMessageDialog(FMsg, FDLGTipo, FBotoes);
20
   try
21
       for Cont := 0 to FrmMsg.ComponentCount - 1 do
22
           begin
23
               if ( FrmMsg.Components[Cont] is TButton ) then
24
                   begin
25
                       with TButton(FrmMsg.Components[Cont]) do
26
                           begin
27
                               case ModalResult of
28
                                   mrYes: Caption := 'Sim';
29
                                   mrNo: Caption := 'Não';
30
                                   mrOk: Caption := 'Ok';
31
                                   mrCancel: Caption := 'Cancelar';
32
                                   mrAbort: Caption := 'Abortar';
33
                                   mrRetry: Caption := 'Desfazer';
34
                                   mrIgnore: Caption := 'Ignorar';
35
                                   mrAll: Caption := 'Todos';
36
                                   mrNoToAll: Caption := 'Não para todos';
37
                                   mrYesToAll: Caption := 'Sim para todos';
38
                               end;
39
                           end;
40
                   end;
41
           end;
42
       FrmMsg.Caption := CaptionForm;
43
       Result := FrmMsg.ShowModal;
44
   finally
45
       FrmMsg.Free;
46
   end;
47
end;