Ver Mensaje Individual
  #16  
Antiguo 26-01-2004
wallesis wallesis is offline
Miembro
 
Registrado: dic 2004
Posts: 25
Reputación: 0
wallesis Va por buen camino
Hola Guillotmarc.
Estoy en un punto muerto, digamos que he tirado la toalla. No he sabido, o podido, dar con ello.
Con la llamada a otro procedimiento lo que queria hacer es, logicamente, evitar escribir de nuevo parte del codigo.
Consegui hacer la llamada sin que me diese error alguno ni al compilar ni en ejecución, pero al pulsar el boton el programa no hacia nada.
Cuando me empezo a salir humo por las orejas , decidi olvidarme de la llamada al procedimiento y ejecutar para ese procedimiento unas nuevas sentencias. Pero, de nuevo, la suerte no me acompaño.

Resumiendo un poco, yo dispongo de un editor con ventanas MDI. Codifique el evento On CloseQuery de la ventana hija, y funciona bien.
En la ventana principal o padre, dispongo de una barra de herramientas y en ella está un boton para cerrar ventanas (activas).Mi idea al principio fue, desde este boton realizar una llamada al procedimiento del formulario hijo, On CloseQuery y así cerrar las ventanas. Pero y
Ultimamente, como he dicho antes, he codificado nuevas sentencias para ese boton:
var
respuesta,i: integer;
Ventana_Activa: string;
ventana: TVentana_Hija;

{ for i := 0 to MI_Ventana.Count - 1 do
if (MI_Ventana.Items[i].Tag = 0) then
if (MI_Ventana.Items[i].Checked = True) then
Ventana_Activa := MI_Ventana.Items[i].Caption; }

ventana := Application.FindComponent(ActiveMDIChild.Caption) as TVentana_Hija;
if assigned (ventana) then
ventana.Show
else exit;

if (ventana.RE_Editor.Modified) then
begin
Respuesta := Application.MessageBox('¿Desea guardar los cambios? ',
' Guardar',mb_IconWarning + mb_yesNoCancel);
Case Respuesta of
idYes: begin
if (FileExists (ventana.Caption)) then
begin
ventana.RE_Editor.Lines.SaveToFile(ventana.Caption);
Close;
end
else
begin
if(SD_Guardar_Fichero.Execute) then
begin
SD_Guardar_Fichero.Filename := Ventana_Activa;
ventana.RE_Editor.Lines.SaveToFile(ventana.Caption);
Close;
end;
end;
end;
idNo : Close;
idCancel: ;
end;
end
else Close;

Este es el procedimiento que estoy utilizando. Problemas: creo que no me asigna nada a la variable ventana y como ñe tengo puesto exit , pues se sale del procedimiento. es decir, que cuando pulso el boton no ocurre nada. Tambien intente, como se ve arriba, darle el nombre de la ventana cogiendolo del menu ventana, pero tampoco funciona.
Una vez que conseguí entrar en el procedimiento me lo ejecutaba dos veces, por ejemplo`pulsaba el boton y aparecia el mensaje de si quería guardar los cambios, le decia, por ejemplo, que no y volvia a salir de nuevo el memnsaje y si pulsaba de nuevo que no se cerraba la ventana.

Otra cosa que me sucede en este y en el otro procedimiento (On CloseQuery) es que he observado que las ventanas nuevas (en blanco) se crean con la propiedad modified en True, a pesar de que al crear estas ventanas le coloco una sentencia, que tambien está en el botón abrir y si funciona, en la que le pongo la propiedad a false. Tambien el el boton on create de la ventana hija le tengo puesto otra sentencia el la que pongo modified a false.

Bueno, como puedes ver, estoy bastante entretenido
De todas formas te agradezco mucho que te hallas acordado de mi.
Muchas gracias.
Responder Con Cita