Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Ventanas modales en Kylix (https://www.clubdelphi.com/foros/showthread.php?t=34166)

salvica 29-07-2006 22:09:21

Ventanas modales en Kylix
 
Hola a tod@s

¿podeis decirme como funcionan las ventanas modales en kylix?

intento lo siguiente:
Código Delphi [-]
{ Crear los directorios de trabajo del proceso }
  ForceDirectories( DIR_MAIN+OS_Separador+'CONFIG' );
  ForceDirectories( DIR_MAIN+OS_Separador+USUARIO );
  if( Libc.system(PChar('chmod -R 777 '+DIR_MAIN))<>-1 ) then begin
      Application.CreateForm(TForm_MessageBox, Form_MessageBox);
      with Form_MessageBox do begin
           Frm_MessageBox_Iniciar( 'No se pueden cambiar los permisos',
                                   'Los permisos del directorio '+DIR_MAIN+
                                   ' no pueden cambiarse'+OS_CRLF2+
                                   'Solicite ayuda al administrador del sistema'+OS_CRLF2+
                                   'Pulse el boton para continuar el proceso',
                                    imgIconWarning, btnAccept );
           ShowModal;
           Free;
      end;
end;
y me cierra la aplicación

Los contenidos de las variables son:
Código Delphi [-]
const
  OS_Separador = '/';
  OS_CRLF2     = #$D#$A#$D#$A;
  DIR_MAIN     = '/usr/local/PROGRAMAS';
  USUARIO      = 'salvador';

El form Form_MessageBox es una ventana con :
- un icono que contiene el tipo de mensaje (Error, Exclamation, Information, Question, Warning)
- una etiqueta de título
- una etiqueta de mensajes que puede ocupar varias líneas
- tres botones con ModalResult = mrNone y que les cambio el "Caption" cuando llamo a la función Frm_MessageBox_Iniciar() que está definida en "public"

El código de los botones de salida es el siguiente:
Código Delphi [-]
procedure TForm_MessageBox.BitBtn_ACEPTAR_OnClick(Sender: TObject);
begin
 ModalResult := mrYes;
end;

procedure TForm_MessageBox.BitBtn_CANCELAR_OnClick(Sender: TObject);
begin
  ModalResult := mrNo;
end;

procedure TForm_MessageBox.BitBtn_REINTENTAR_OnClick(Sender: TObject);
begin
  ModalResult := mrRetry;
end;

Gracias adelantadas
salvica

salvica 30-07-2006 12:14:57

He estado mirando la ayuda de Kylix y recomienda NO USAR Free, sino que para liberar la memoria se utilice Release :mad::mad::mad:

Bien, ya no cierra la aplicación, pero ahora NO MUESTRA la ventana que la llamó, con lo que se queda "colgada" la aplicación (tengo que hacer Run / Program reset (Ctrl+F2)

He probado a poner un Form1.Show, pero como la llamada la hago en el OnCreate() (es un conjunto de comprobaciones, al crear la aplicación), parece que no continúa la secuencia.

¿Sugerencias?
Gracias
salvica

Nose 15-09-2006 01:36:01

Disculpa, pero para llamar a ventanas modales uso el esquema try/finally y uso FreeAndNil ( Form ) en Kylixto.
Y usa ShowModal;


La franja horaria es GMT +2. Ahora son las 20:41:48.

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