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 31-10-2007
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
¿Cómo cancelar OnShow?

En mi aplicación, llamo a un Form, en el OnShow tengo un MesageDlg con un 'Case' varias opciones, entre ellas 'Cancelar'.
El 'Form' es el mismo para cada una de las opciones, su función será en base al valor que le doy a una variable en las distintas opciones.

Lo llamo:

Código:
Application.CreateForm(TfDomingo_T, fDomingo_T);
fDomingo_T.show;
En el evento OnShow va esto:

Código:
Donde := MessageDlgPosI(' ¿Cena, Mensaje, Presidir u Otro?  ',mtInformation,[mbIgnore,
         mbRetry, mbAll, mbNoToAll, mbYesToAll],0,360,319,ltSpanish2);
 
 case Donde of
    8:
      begin  // 8: Es Presidir
       EsP := True ;
      end;
    4:
      begin  // 4: Es Cena
      EsC := True;
      end;
    5:
      begin  // Es Mensaje
       EsM := True;
      end;
    9:
      begin  // Es otro
       EsO := True;
      end;
    10:
      begin  // Es Cancelar
       EsCerrar := True;
       end;
 end; // case

// He ententado con esto, en la opción 'Cancelar' hacer 'EsCerrar = True' y...


if EsCerrar then
 begin
 EsCerrar := False;
 Close;

// Pero me da un mensaje de error: 
// 'Cannot change Visible in OnShowor OnHide'
Entonces
¿Qué debo hacer para que el form no se muestre cuando pulso 'Cancelar'?

¿Es posible?

Gracias de antemano.
Un saludo.
Tonio.
Responder Con Cita
  #2  
Antiguo 31-10-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
En lugar de programar todo esto en el "OnShow", es más recomendable (en este caso) crear un proceso tuyo, y desde ahí realizar las comprobaciones.

Que ganamos haciendo esto? Pues que si no queremos mostrar el formulario, no llamamos el "show" y ya tenemos el cancelar hecho.

Así pues, la cosa quedaría algo parecida a esto:

Lo llamas:
Código Delphi [-]
Application.CreateForm(TfDomingo_T, fDomingo_T);
fDomingo_T.mostrarFormulario;

y definir el procedure "mostrarFormulario":

Código Delphi [-]
Donde := MessageDlgPosI(' ¿Cena, Mensaje, Presidir u Otro?  ',mtInformation,[mbIgnore,
         mbRetry, mbAll, mbNoToAll, mbYesToAll],0,360,319,ltSpanish2);
 
 case Donde of
    8:
      begin  // 8: Es Presidir
       EsP := True ;
      end;
    4:
      begin  // 4: Es Cena
      EsC := True;
      end;
    5:
      begin  // Es Mensaje
       EsM := True;
      end;
    9:
      begin  // Es otro
       EsO := True;
      end;
    10:
      begin  // Es Cancelar
       EsCerrar := True;
       end;
 end; // case

// He ententado con esto, en la opción 'Cancelar' hacer 'EsCerrar = True' y...


if not EsCerrar then
 begin
   show;
 end;

Saludos.
Responder Con Cita
  #3  
Antiguo 31-10-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Se me olvidaba, para capturar el resultado del mensaje, puedes compararlo con las constantes (más claras) correspondientes:

En tu caso:
Código Delphi [-]
mrIgnore, mrRetry, mrAll, mrNoToAll, mrYesToAll

Saludos.
Responder Con Cita
  #4  
Antiguo 31-10-2007
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
¿Cómo cancelar OnShow?

Gracias xEsk, no lo he probado, pero, por lógica debe funcionar, ya te contaré.
El emplear las constantes de esa forma, es por una causa, he encontrado un fichero .pas, con el que se puede hacer que en los 'MessagesDlg' la opción vaya en castellano y los títulos que desees, en un fichero .txt se definen y puedes tener las que quieras, si te fijas, el que he puesto tiene la opción de situarlo en la pantalla donde quieras y 'ltSpanish2' dice que coja esa opción del citado fichero .txt, vamos que los nombre en inglés los sustituyo por otros en castellano, pero en el programa debo poner el nombre en inglés. No se si será mucho rollo, si es así perdona.

Gracias nuevamente, también por la rapidez.
Un saludo.
Tonio.
Responder Con Cita
  #5  
Antiguo 31-10-2007
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
¿Cómo cancelar OnShow?

Lo he probado. Va de cine.
Lo que no se es si es aquí donde lo debo agradecer y decir que funciona.
Si no es la forma, que alguien me lo diga.
Gracias.
Tonio.
Responder Con Cita
  #6  
Antiguo 31-10-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por Tonio Ver Mensaje
Lo he probado. Va de cine.
Lo que no se es si es aquí donde lo debo agradecer y decir que funciona.
Si no es la forma, que alguien me lo diga.
Gracias.
Tonio.
[OFFTOPIC]
Pues aunque no me concierne, pero también lo podrías agradecer pagando unos vinos por la "La Senda de los Elefantes", o para no complicar el asunto, en la taberna del club.
[/OFFTOPIC]
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #7  
Antiguo 31-10-2007
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
¿Cómo cancelar OnShow?

ArdiIIa, la taberna del Club, no se donde está, pero la calle del Laurel, pués sí, así que la cosa es fácil, si coincidimos en esta estupenda ciudad, nos podemos tomar unos vinos, incluído xEsk, cómo es lógico.

Gracias por tu aportación.
Un saludo.
Tonio.
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
Thread OnShow walito Varios 4 17-10-2007 00:36:24
Como cancelar una transaccion? Active Transaction = 0??? JuanErasmo Firebird e Interbase 5 07-08-2007 21:40:46
¿Cómo puedo cancelar un ciclo? Leviatan Varios 3 04-09-2006 15:40:41
Cómo cerrar una forma en el OnShow Event? pepix Varios 2 08-07-2004 17:09:37
Evento de formulario posterior a onshow apicito OOP 12 18-06-2004 10:58:20


La franja horaria es GMT +2. Ahora son las 08:34:37.


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