PDA

Ver la Versión Completa : Ventanas modales en Kylix


salvica
29-07-2006, 22:09:21
Hola a tod@s

¿podeis decirme como funcionan las ventanas modales en kylix?

intento lo siguiente:

{ 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:

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:

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;