La unidad a agregar al
Uses es
GHF.Form.
Localizas aquellos formularios que te interese adaptar a
TghForm. Si en su respectivo archivo .pas dice algo como:
Lo cambias por
En caso de que utilices herencia visual este cambio es más fácil, porque solo hay que hacerlo en las
plantillas base. Y cambiar la clase padre por TghForm no te obliga a cambiar la sintaxis de creación y apertura de formularios; tú decides cuándo usar la sintaxis corta que se explica a continuación:
Cita:
Empezado por Al González
[...] cuando derivamos nuestros formularios de TghForm en lugar de TForm, seguimos contando con todo lo que trae de herencia TForm, pero podemos lanzar los formularios sin tener que crear y destruir nosotros mismos las instancias de éstos. Con una sola línea se crea, se ejecuta (abre) y, cuando el usuario lo cierra, se destruye el formulario:
No necesitamos preocuparnos de instanciar la variable del formulario, ni de liberarla después de usar éste. Execute es como ShowModal, pero haciendo el trabajo completo. Y, como ShowModal, devuelve un estado mrOK, mrCancel, ..., según la manera en que haya sido cerrado el formulario. Además puede recibir parámetros abiertos, por si queremos indicarle algo a nuestro formulario:
Código Delphi [-]TForm1.Execute ('Rueda');
Código Delphi [-]TForm1.Execute ('Palanca');
El formulario puede "recoger" esos parámetros en alguno de sus eventos, como el evento OnCreate:
Código Delphi [-]procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := Caption + ' - ' + OpenParams [0];
end;
Y si queremos algo similar a Execute, pero que en lugar de hacer ShowModal abra el formulario como lo hace Show, entonces tenemos para ello el método Open:
|
NOTA: En la práctica, muy pocas veces es necesaria la variable global que Delphi agrega con cada formulario. Pero, en caso de que la necesites, puedes asignarle
Self en el evento OnCreate. Aunque con ello se reduce un poco la ventaja del ahorro de código.
Saludos.
Al González.
P.D. Agradecería a cualquiera que haya conservado o tenga acceso al texto original del mensaje #3 (tendré más cuidado con los
clics en mi teléfono móvil).