Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2009
Avatar de dmassive
dmassive dmassive is offline
Miembro
 
Registrado: mar 2004
Ubicación: Paraná - Argentina
Posts: 60
Poder: 21
dmassive Va por buen camino
Question MessageDlg que boton tiene el foco?

Buenos dias!

Uso el siguiente dialogo:
Código Delphi [-]
If MessageDlg('¿Desea continuar?', mtWarning, [mbYes, mbNo], 0) = mrYes Then
pero siempre el foco esta sobre el boton mbYes, ¿se podria cambiar esto y que el foco lo tenga el boton mbNo?

Gracias!
__________________
"It's nice to be important, but it's more important to be nice"
Responder Con Cita
  #2  
Antiguo 14-02-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Fíjate que existe otra versión de la misma función que cuenta con un parámetro más, precisamente, para determinar qué botón será el "predeterminado". Así el asunto podría quedar:

Código Delphi [-]
If MessageDlg('¿Desea continuar?', mtWarning, [mbYes, mbNo], 0, mbNo) = mrYes Then
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 14-02-2009
Avatar de dmassive
dmassive dmassive is offline
Miembro
 
Registrado: mar 2004
Ubicación: Paraná - Argentina
Posts: 60
Poder: 21
dmassive Va por buen camino
Thumbs up

Lo habia visto en la ayuda de Delphi 7, pero me da este error:
Código:
[Error] (234): Too many actual parameters
__________________
"It's nice to be important, but it's more important to be nice"
Responder Con Cita
  #4  
Antiguo 14-02-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Entonces debe ser "problema" de la versión de Delphi. Yo uso la 2009, y ahí existe dicha "versión" de la función "MessageDlg()". Creo que podemos, directamente, copiándote aquí la versión de la función que te permitirá hacer lo que necesitas:

Código Delphi [-]
function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn): Integer; overload;
begin
  Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '', DefaultButton);
end;

Creo que podrá servirte, puesto que ambas versiones de las funciones usan "MessageDlgPostHelp", y, espero que esta sí que funcione como se espera en tu versión de Delphi. De todas formas, estoy viendo que esta última función también está sobrecargada... al menos en Delphi 2009, así que no sé si tendremos similar problema. Y habrá que buscar otra solución...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 14-02-2009
Avatar de dmassive
dmassive dmassive is offline
Miembro
 
Registrado: mar 2004
Ubicación: Paraná - Argentina
Posts: 60
Poder: 21
dmassive Va por buen camino
Unhappy

Estuve probando y me da el mismo error:
Código:
[Error] Too many actual parameters
__________________
"It's nice to be important, but it's more important to be nice"
Responder Con Cita
  #6  
Antiguo 14-02-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola dmassive,
Añade en uses la unidad QDialogs. Eso debería bastar para poder hacer uso de las funciónes MessageDlg sobrecargadas que permiten establecer, entre otras cosas, el botón por defecto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 14-02-2009
Avatar de dmassive
dmassive dmassive is offline
Miembro
 
Registrado: mar 2004
Ubicación: Paraná - Argentina
Posts: 60
Poder: 21
dmassive Va por buen camino
Thumbs up

Gracias! Efectivamente con QDialogs se soluciona!

Al margen de la sastifactoria solucion lo negativo es que yo usaba el archivo "Consts.pas" para definir los textos de mis dialogs, pero note que ahora salen en ingles :S Parace que QDialogs toma las constantes de otro archivo :S
__________________
"It's nice to be important, but it's more important to be nice"
Responder Con Cita
  #8  
Antiguo 14-02-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

También puedes hacer esto y el cuadro de diálogo aparecerá en el idioma que tenga establecido el sistema operativo:

Código Delphi [-]
  Application.MessageBox ('¿Desea continuar?', 'Confirmar',
    mb_YesNo Or mb_IconWarning Or mb_DefButton2);

Espero haber ayudado.

Saludos.

Al González.
Responder Con Cita
  #9  
Antiguo 14-02-2009
Avatar de dmassive
dmassive dmassive is offline
Miembro
 
Registrado: mar 2004
Ubicación: Paraná - Argentina
Posts: 60
Poder: 21
dmassive Va por buen camino
Thumbs up

Muy bueno, siguiendo el ejemplo el condicional quedaria asi:
Código Delphi [-]
If Application.MessageBox ('¿Desea continuar?', 'Confirmar', mb_YesNo Or mb_IconWarning Or mb_DefButton2) = mrYes Then
Ademas este toma el sonido del sistema. Gracias!
__________________
"It's nice to be important, but it's more important to be nice"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber que aplicacion tiene el foco Omega Varios 3 13-07-2008 17:36:01
Perdida del foco en MessageDlg labelsoft Varios 0 16-08-2007 17:10:42
Saber quien tiene el foco en javascript fer21unmsm HTML, Javascript y otros 2 28-05-2007 22:06:31
saber si un field tiene el foco salvanano Conexión con bases de datos 0 08-05-2007 16:22:48
Saber el componente que tiene el foco en un formulario Javi2 Varios 3 20-10-2005 16:19:32


La franja horaria es GMT +2. Ahora son las 16:21:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi