Buen día/tarde/noche, según aplique.
Recientemente he retomado Delphi y ObjectPASCAL en CodeTyphon, tratando de replicar lo que ya sabía (hace MUCHO TIEMPO)
me puse a hacerle a mi esposa una aplicacioncita para manejar sus listas de asistencia (ella es maestra) usando PostgreSQL y CodeTyphon. Mis problemas son dos, esencialmente:
- conectar el DataModule a la aplicación DESDE LA CREACIÖN, algo que sabía hacer bastante bien.
- Llamar las pantallas y que dentro de éstas esté correctamente conectado el DataModule para evitar reconectarlo y así.
Les paso el código que estoy haciendo, solamente las partes esenciales.
El DataModule:
Código Delphi
[-]unit uDatos;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, PQConnection, SQLDB, DB;
type
TDatos = class(TDataModule)
Conexion: TPQConnection;
FuenteDatos: TDataSource;
SQLDatos: TSQLQuery;
Transaccion: TSQLTransaction;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
public
end;
var
Datos: TDatos;
implementation
{$R *.frm}
procedure TDatos.DataModuleCreate(Sender: TObject);
begin
Conexion.Connected := True;
end;
procedure TDatos.DataModuleDestroy(Sender: TObject);
begin
Conexion.Connected := False;
end;
end.
La pantalla principal:
Código Delphi
[-]unit uPrincipal;
{$mode objfpc}{$H+}
interface
uses
uDatos, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus;
type
TfrmPrincipal = class(TForm)
imlImagenes: TImageList;
mmuPegar: TMenuItem;
mmuCortar: TMenuItem;
mmuCopiar: TMenuItem;
mmuCerrar: TMenuItem;
mmuRegistroAlumnos: TMenuItem;
mmuRegistroTutores: TMenuItem;
mmuListaAsistencia: TMenuItem;
mmuProcesos: TMenuItem;
mmuVentana: TMenuItem;
mmuReportes: TMenuItem;
mmuArchivo: TMenuItem;
mmuEditar: TMenuItem;
mmuMenu: TMainMenu;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure mmuCerrarClick(Sender: TObject);
private
public
end;
var
frmPrincipal: TfrmPrincipal;
gDatos : TDataModule;
implementation
{$R *.frm}
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
gDatos := Datos.Create(Self);
end;
procedure TfrmPrincipal.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
end;
procedure TfrmPrincipal.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Accion : TCloseAction;
begin
if MessageDlg('¿Desea salir de la aplicación?', mtConfirmation,[mbYes, mbNo],0) = mrYes then
begin
Accion := caFree;
FormClose(Sender, Accion);
end;
end;
procedure TfrmPrincipal.mmuCerrarClick(Sender: TObject);
begin
Close;
end;
end.
Y el compilador del proyecto:
Código Delphi
[-]program SEPPuebla;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
{$IFDEF HASAMIGA}
athreads,
{$ENDIF}
Interfaces, Forms, uPrincipal, uDatos
;
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TfrmPrincipal, frmPrincipal);
Application.Run;
end.
Si tuviesen algún comentario o indicación, con todo gusto lo implememento y les comento qué sucede.
¡Saludos!