RSS

MessageDlg Personalizada

25 nov

DefButton: Botão default;
Portugues: Se a MessageDlg vai será traduzida;
Checar: Com este parâmetro um CheckBox é adicionado;
MsgCheck: Caption do CheckBox;
Funcao: Ponteiro para uma procedure que pode ser passada como parâmetro;
Eis a função:


function MessageDlgCheck(Msg: string; AType: TMsgDlgType; AButtons:
TMsgDlgButtons;
IndiceHelp: LongInt; DefButton: TMOdalResult; Portugues: Boolean; Checar:
Boolean; MsgCheck: string; Funcao: TProcedure): Word;
var
I: Integer;
Mensagem: TForm;
Check: TCheckBox;
begin
Check := nil;
Mensagem := CreateMessageDialog(Msg, AType, Abuttons);
Mensagem.HelpContext := IndiceHelp;
with Mensagem do
begin
for i := 0 to ComponentCount - 1 do
begin
if (Components[i] is TButton) then
begin
if (TButton(Components[i]).ModalResult = DefButton) then
begin
ActiveControl := TWincontrol(Components[i]);
end;
end;
end;
if Portugues then
begin
if Atype = mtConfirmation then
Caption := 'Confirmação'
else if AType = mtWarning then
Caption := 'Aviso'
else if AType = mtError then
Caption := 'Erro'
else if AType = mtInformation then
Caption := 'Informação';
end;
end;
if Portugues then
begin
TButton(Mensagem.FindComponent('YES')).Caption := '&Sim';
TButton(Mensagem.FindComponent('NO')).Caption := '&Não';
TButton(Mensagem.FindComponent('CANCEL')).Caption := '&Cancelar';
TButton(Mensagem.FindComponent('ABORT')).Caption := '&Abortar';
TButton(Mensagem.FindComponent('RETRY')).Caption := '&Repetir';
TButton(Mensagem.FindComponent('IGNORE')).Caption := '&Ignorar';
TButton(Mensagem.FindComponent('ALL')).Caption := '&Todos';
TButton(Mensagem.FindComponent('HELP')).Caption := 'A&juda';
end;
if Checar then
begin
Mensagem.ClientHeight := Mensagem.ClientHeight + 20;
Check := TCheckBox.Create(Mensagem);
Check.Parent := Mensagem;
Check.Left := 15;
Check.Top := Mensagem.ClientHeight - 20;
Check.Visible := True;
Check.Caption := MsgCheck;
Check.Width := Mensagem.ClientWidth - 10;
end;
Result := Mensagem.ShowModal;
if Check.Checked then
Funcao;
Mensagem.Free;
end;

end.

Exemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
procedure ChecarEstadoCheckBox;
begin
ShowMessage('O CheckBox foi checado pelo usuário na janela de mensagem.');
end;
begin
MessageDlgCheck('Este é um "MessageDlg" personalizado.' + #13#13 +
'Clique no "CheckBox" pra ver o efeito.', mtInformation, [mbYes, mbNo],
0, mrNo, True, True, 'Não mostrar esta mensagem novamente.',
@ChecarEstadoCheckBox);
end;

end

Anúncios
 
Deixe um comentário

Publicado por em 25/11/2009 em Estudos Delphi

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: