Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
  With TForm2.Create(Self) do
  try
    Show;
    MessageDlg('acabo de abrirlo y voy a cerrarlo', mtWarning, [mbOK], 0);
  finally
    Free;
  end;

De todas formas no me queda claro que si cambias el tipo de form, sí aparezca.
Cuando el programa pasa por el Show, no se detiene, así que justo después del Show ejecuta el Free y lo destruye, de ahí que "no aparezca" (sí aparece pero fugazmente).

Si utilizas ShowModal y fsNormal, sí aparece porque en ese caso, ShowModal, sí detiene la ejecución del programa en es punto.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 22-09-2010
fwhite fwhite is offline
Miembro
 
Registrado: sep 2006
Posts: 37
Poder: 0
fwhite Va por buen camino
Aplicacion MDI

Si el pongo el estilo de la venta con fsMDIChild y la abro con ShowModal me da el siguiente mensaje de error:
"Cannot make a visible window modal".
¿Que es lo que pasa?
Responder Con Cita
  #3  
Antiguo 22-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No puedes usar MDIChild y ShowModal. Si quieres un formulario MODAL debe ser de tipo normal, no tiene sentido que sea MDIChild.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-09-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
¿Cuando eras formularios Child no valía con poner el visible a true para mostrarlos o a false para ocultarlos y usar la propiedad brintofront para ponerlos encima de los demás formularios?

Un saludo.
Responder Con Cita
  #5  
Antiguo 22-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ElDioni Ver Mensaje
¿Cuando eras formularios Child no valía con poner el visible a true para mostrarlos o a false para ocultarlos y usar la propiedad brintofront para ponerlos encima de los demás formularios?
Eso puede que sí, pero BringToFront no es lo mismo que Modal, hay que tenerlo en cuenta.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 22-09-2010
Avatar de Ana María
Ana María Ana María is offline
Miembro
 
Registrado: ago 2008
Posts: 40
Poder: 0
Ana María Va por buen camino
Aquí pongo un pequeño código, comentado, práctico para trabajar con aplicaciones MDI, usando la herencia.

Debes de crear un nuevo form al que llamarás MDI y a su respectiva Unit UMDI, hay que cambiar su propiedad FormStyle a fsMDIChild y en el evento ONClose colocar caFree, también hay que remover de la interface la declaración var MDI : TMDI, y agregar las classFunction tal y como se ve a continuación.

Código Delphi [-]
unit UMDI;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TMDI = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  public
    class function Formulario: TMDI;
    class function CrearOTraerAlFrente: TMDI;
  end;

implementation

{$R *.dfm}

procedure TMDI.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree; //Libera memoria al cerrar
end;

class function TMDI.Formulario: TMDI; //Función auxiliar para comprobar que un form
//está abierto
var
  I: Integer;
begin
  for I := Screen.FormCount - 1 downto 0 do
  begin
    TForm(Result) := Screen.Forms[i];
    if Result.ClassType = Self then
      Exit;
  end;
  Result := nil;
end;

class function TMDI.CrearOTraerAlFrente: TMDI;
begin
  Result := Formulario;
  LockWindowUpdate(Application.MainForm.ClientHandle); //Evita un molesto efecto
  // visual al crear la ventana
  try
    if Assigned(Result) then //Comprueba si existe el form y lo trae al frente
    begin
      if Result.WindowState = wsMinimized then
        ShowWindow(Result.Handle, SW_RESTORE);
      Result.BringToFront;
    end
    else
    begin
      Result := Create(Application.MainForm); //Si no existe lo crea y lo muestra
      Result.Show;
    end;
  finally
    LockWindowUpdate(0);
  end;
end;

end.


Debes heredar de el form que acabas de crear todos los forms MDI que necesites, para hacerlo en Delphi7 sigues : File > New>Other/(buscas el tab con el nombre de tu proyecto) en Delphi 2010 : File > New>Other/Inheritable Items, y haces dobleClick sobre MDI

Para llamarlo desde el form principal de tu aplicación solo debes agregarlo a la cláusula Uses de la implementación de tu form principal y escribir lo siguiente (para el caso de tu ejemplo):

Código Delphi [-]
TForm2.CrearOTraerAlFrente;


Con eso es suficiente para trabajar con MDI.

PD: No olvides quitar los forms heredados de la creación automática de forms. Project > Options > Forms

Última edición por Ana María fecha: 22-09-2010 a las 21:51:31. Razón: No me funcionaron las etiquetas
Responder Con Cita
  #7  
Antiguo 22-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Ana María Ver Mensaje
Código Delphi [-]unit UMDI; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TMDI = class(TForm) procedure FormClose(Sender: TObject; var Action: TCloseAction); public class function Formulario: TMDI; class function CrearOTraerAlFrente: TMDI; end; implementation {$R *.dfm} procedure TMDI.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; //Libera memoria al cerrar end; class function TMDI.Formulario: TMDI; //Función auxiliar para comprobar que un form //está abierto var I: Integer; begin for I := Screen.FormCount - 1 downto 0 do begin TForm(Result) := Screen.Forms[i]; if Result.ClassType = Self then Exit; end; Result := nil; end; class function TMDI.CrearOTraerAlFrente: TMDI; begin Result := Formulario; LockWindowUpdate(Application.MainForm.ClientHandle); //Evita un molesto efecto // visual al crear la ventana try if Assigned(Result) then //Comprueba si existe el form y lo trae al frente begin if Result.WindowState = wsMinimized then ShowWindow(Result.Handle, SW_RESTORE); Result.BringToFront; end else begin Result := Create(Application.MainForm); //Si no existe lo crea y lo muestra Result.Show; end; finally LockWindowUpdate(0); end; end; end.
¿ Y despues no te cuesta leer ese código ?

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Minimizar una aplicacion al iniciar aplicacion sidneyb OOP 7 11-01-2010 18:51:53
Aplicación de Servicio+Aplicación Normal +Socket jake API de Windows 5 21-06-2007 18:53:19
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Diferencia entre aplicacion Clx y aplicación normal??? JorgeBec Varios 1 27-10-2004 17:30:49
aplicacion vertical? aplicacion horizontal? maruenda Varios 3 28-02-2004 23:23:20


La franja horaria es GMT +2. Ahora son las 07:10:26.


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