Remotándome a hilos del año 2007 (de donde he obtenido en parte una solución) donde algunos de los aquí presentes, eran del tipo anterior mencionado, tarde o temprano me encontraría con estos errores que nunca vienen mal, si la dicha es buena.
En ese nostálgico hilo, se decía:
Tienes 2 formas de hacerlo, desde mi punto de vista:
1- Creando una unidad nueva.
- File -> New -> Unit, allí declaras la función y su implementación. Ya es una rutina que no pertenece a ningún Form, pero puedes usarla donde quieras. La Unidad puede llamarse Global.pas, publica.pas, etc. Allí colocas todas las rutinas que sean comunes a varios Forms.
2 - Usando Herencia:
- Creas un Form vacío, le añades la rutina "Habilitar" y lo que debe hacer. Lo llamas BaseForm.Pas
- Al crear una nueva ventana que deba tener esa función "Habilitar", usas File -> new -> other -> projects y ahí debe aparecer "BaseForm", lo seleccionas y le das al botón heredar. La nueva ventana ya dispone del método Habilitar y puedes cambiar su forma de actuar mediante la directiva Override
Este método tiene una ventaja, cualquier ventana que tengas tendrá el método Habilitar, sin importar si es Form3, Form10 o Form32
He usado como principiante que es uno, la primera opción. La 2º se quedará, para cuando pueda entender mas conceptos que ahora pueden ser dificiles de asimilar.
-Creo una unidad llamada Unit6Goblal.
-Inserto la función en la unidad Unit6Global tal que así:
unit Unit6Global; {$mode objfpc}{$H+} interface uses Classes, SysUtils; implementation function GetSexoSeleccionado: string; begin Result := RadioGroup1.Items[RadioGroup1.ItemIndex]; end; end
-Indico en el uses de las unidades donde necesito dicha dicha función la unidad Unit6Global.
Pero la función tiene un componente RadioGroup y éste es usado en varias formularios, lo cual me da error de compilación indicándome que no "conoce" este componente en la unidadGlobal, porque está en otras unidades.
Mi primera idea, era indicar en el Uses de la unidad Unit6Global las unidades donde está siendo usado este componente, pero tampoco funciona.
Un saludo