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)
-   -   Error accediendo a propiedad Caption de Formulario (https://www.clubdelphi.com/foros/showthread.php?t=95624)

Bretema 23-03-2022 13:02:47

Error accediendo a propiedad Caption de Formulario
 
Hola a todos,

Me he encontrado con el siguiente problema, tengo un formulario inicial de una aplicación que se encarga de ir llamando a otra serie de formularios para realizar diversas tareas. Los formularios no son creados por defecto al arrancar la aplicación sino que se van creando si son necesarios. En esos formularios se realizan las típicas tareas de mantenimiento (altas, bajas y modificaciones) y al iniciarlas intento cambiar el Caption de la ventana para reflejar la tarea que se va a llevar a cabo ... en ese momento salta una excepción:

"El proyecto xxxxx ha lanzado una excepción de la clase External: SIGSEGV' en archivo '.\include\control.inc' en linea 3548"

la linea en cuestión es: "GetTextMethod := TMethod(@Self.GetTextBuf);"

lo curioso es que esta excepción también salta al intentar simplemente acceder al contenido de Caption desde el código del formulario.

Por otra parte, si los formularios son creados por la aplicación al iniciarse y me limito a invocarlos, no se genera ningún tipo de excepción.

¿Alguna idea sobre lo que puede estar pasando .....?

Gracias anticipadas.

Casimiro Noteví 23-03-2022 13:20:40

Sin ver el código que usas solamente podemos adivinar.
Se supone que el form está creado cuando le cambias el caption.

Bretema 23-03-2022 15:59:21

1 Archivos Adjunto(s)
Gracias por tu interés Casimiro,

adjunto un ejemplo que muestra el error, hay un formulario inicial desde el que se pueden lanzar otros dos formularios, uno creado estáticamente al lanzar la aplicación y otro que se crea dinámicamente. En los tres formularios hay un par de botones para cambiar su caption, en los dos creados estáticamente no dan problemas y en el creado dinamicamente genera la excepción que comento en mi mensaje original.

Saludos.

Casimiro Noteví 23-03-2022 17:16:30

Cambia FManu por Self.

Código Delphi [-]
procedure TFManu.Button1Click(Sender: TObject);
begin
  Self.Caption:= 'FAuto - Button1';;
//  FManu.caption := 'FAuto - Button1';
end;

procedure TFManu.Button2Click(Sender: TObject);
begin
  self.caption := 'FAuto - Button2';
//  FManu.caption := 'FAuto - Button2';
end;

Bretema 23-03-2022 19:27:35

Gracias por la solución Casimiro !!!

por curiosidad, ¿porqué no funcionaría en el form creado dinamicamente y en los otros si?, y otra pregunta de alguien no muy puesto ... ¿como sabe que self hace referencia al formulario y no, por ejemplo, al botón que también tiene esa propiedad?

Saludos.

Casimiro Noteví 23-03-2022 19:49:33

Mira si este hilo te aclara tus dudas. Léelo hasta el final :)


La franja horaria es GMT +2. Ahora son las 20:43:12.

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