MessageDlg foco no botao NO
13/12/2005
0
Tenho essa msg, e gostaria que o foco ficasse sempre no No, e nao no Yes, como esta fazendo
No aguardo
Evandro
Evandro_araujo
Post mais votado
13/12/2005
MessageBox (Handle, Messagem, Caption, Botoes)
MessageBox(0, Pchar(´Testando o MessageBox!´), ´Teste´, MB_YESNO+MB_DEFBUTTON2+ MB_ICONQUESTION);
Espero q ajude!!!
Boa Sorte!!!
Martins
Mais Posts
13/12/2005
Rafael Mattos
14/12/2005
Adriano Santos
MessageBox (Handle, Messagem, Caption, Botoes)
MessageBox(0, Pchar(´Testando o MessageBox!´), ´Teste´, MB_YESNO+MB_DEFBUTTON2+ MB_ICONQUESTION);
Bom amigo, Eu sempre dou a mesma dica. Se quiseres usar MessageDlg então deve criar sua própria função MessageDlg, se este não for o problema use o MessageBox como recomendado pelo meu camarada [b:c93a91e124]Martins[/b:c93a91e124]. Logo abaixo confira um algoritimo que criei para fazer minha MessageDlg personalizada:
function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone; Portugues: Boolean = True): Word; var I: Integer; Mensagem: TForm; begin 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; Result := Mensagem.ShowModal; Mensagem.Free; end;
Dá pra fazer a festa com isso. :D
14/12/2005
Martins
Postei o MessageBox por parecer ser uma solução mais imediata, mas seu código tá show!!
:D
14/12/2005
Adriano Santos
Obrigado velhinho. Na verdade tenho ainda outra solução para os mais ´avançadinhos´. Um MessageDlg com CheckBox, esse é bem legal.
Isso mata também um problema na tradução dos botões que todo mundo tenta fazer e sempre dá uns olés nos iniciantes.
Se liga a solução com o CheckBox:
function Dc_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 <> nil then if Check.Checked then Funcao; Mensagem.Free; end;
[b:6486f02dd8]Use assim[/b:6486f02dd8]
procedure TForm1.Button1Click(Sender: TObject); procedure MostraMensagem; begin ShowMessage(´Clicou´); end; begin Dc_MessageDlgCheck(´Clique no CheckBox.´, mtInformation, [mbYes, mbNo], 0, mrNo, True, False, ´Clique neste CheckBox´, @MostraMensagem); end;
14/12/2005
Martins
Mandou bem outra vez, realmente essa é pro pessoal q tá mais acostumado com o Delphi, mas dá para usar na boa.
T+
Clique aqui para fazer login e interagir na Comunidade :)