Ver Mensaje Individual
  #3  
Antiguo 16-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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
Hola yevabas.

No puedo reproducir tu ejemplo por no utilizar muchos de los componentes que figuran en tu código y realmente cuando leí tu mensaje, se me presentaron muchos de los interrogantes que te planteó nlsgarcia en el mensaje anterior.

Pero, a grandes rasgos creo haber entendido que deseas ejecutar el form TClock en el nuevo escritorio y el problema consiste en que luego no podes cerrar el form (Form1) que llamó a TClock.

Si es así, creo que podrías hacer:
Código Delphi [-]
...

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure Validar;
  private
    FODesk, FNDesk, FOThrd : HDESK;
  public
    //...
  end;

...

implementation

uses Unit2; // Clock

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Inicializaciones, etc,
  //....

  // Obtener handles actuales
  FODesk := OpenInputDesktop(0,
                             FALSE,
                             DESKTOP_SWITCHDESKTOP);
  FOThrd := GetThreadDesktop(GetCurrentThreadId());

  // Crear nuevo desktop
  FNDesk := CreateDesktop('NewDesktop',
                          nil,
                          nil,
                          0,
                          DESKTOP_CREATEWINDOW,
                          nil);
  
  if FNDesk = 0 then // ¿ Todo bién ?
    raise Exception.Create('Error creando nuevo escritorio'); // No, error

  // Cambiar a "NewDesktop"
  SwitchDesktop(FNDesk);

  // Ejecutar tu ventana (Clock) en "NewDesktop"
  Validar;

  // Cerrar "NewDesktop"
  CloseDesktop(FNDesk);

  // Restaurar
  SwitchDesktop(FODesk);
  SetThreadDesktop(FOThrd);
  
  ...
end;


procedure TForm1.Validar;
begin
  ...

  with TClock.Create(Self) do
  try
    ...
    ShowModal
  finally
    Free;
  end;
  ...
end;

...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita