Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2021
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Recordando y solicitando ayuda.

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:
  1. conectar el DataModule a la aplicación DESDE LA CREACIÖN, algo que sabía hacer bastante bien.
  2. 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 }

  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}

{ TDatos }

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 }

  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}

{ TfrmPrincipal }  

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  gDatos := Datos.Create(Self);

{  if gDatos.Conexion.Connected then
     MessageDlg('BBDD conectada', mtInformation,[mbOk],0);}
end;

procedure TfrmPrincipal.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
{  gDatos.Conexion.Connected := False;
  CloseAction := caFree;}
end;

procedure TfrmPrincipal.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  Accion : TCloseAction;
begin
//  CanClose := ;
  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, // this includes the CT adLCL widgetset
  Forms, uPrincipal, uDatos
  { you can add units after this };

{$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!
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco

Última edición por Casimiro Notevi fecha: 01-09-2021 a las 19:19:45.
Responder Con Cita
  #2  
Antiguo 01-09-2021
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Ignorando lo que es CodeTyphon y suponiendo que entendí tu pregunta, creo que sólo te falta la siguiente línea:
Código Delphi [-]
Application.CreateForm(TDatos, Datos);

Pero ten en cuenta que soy súper principiante.
Que conste que te avisé.
Responder Con Cita
  #3  
Antiguo 01-09-2021
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola! Según veo en tu código. En el create de TDatos estás realizando la conexión y TfrmPrincipal.gDatos lo estás creando en TfrmPrincipal.FormCreate por lo tanto debería conectar en ese preciso momento.

Con este código de ejemplo, al crear otras pantallas debes pasarle el objeto TfrmPrincipal.gDatos. Aunque en lugar de ello puedes usar la variable global uDatos.Datos y solo hacer uso de uDatos en las otras pantallas.

Una pregunta. ¿porque CodeTyphon? Si es un desarrollo personal sin animo de lucro, creo que puedes usar el Delphi Community Edition.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #4  
Antiguo 02-09-2021
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Dexter182 Ver Mensaje
Ignorando lo que es CodeTyphon y suponiendo que entendí tu pregunta, creo que sólo te falta la siguiente línea:
Código Delphi [-]Application.CreateForm(TDatos, Datos);


Pero ten en cuenta que soy súper principiante.
Que conste que te avisé.

¡Excelente! Pero ¿en dónde ponerlo? Esa es la duda principal.


Cita:
Empezado por movorack Ver Mensaje
Hola! Según veo en tu código. En el create de TDatos estás realizando la conexión y TfrmPrincipal.gDatos lo estás creando en TfrmPrincipal.FormCreate por lo tanto debería conectar en ese preciso momento.

Con este código de ejemplo, al crear otras pantallas debes pasarle el objeto TfrmPrincipal.gDatos. Aunque en lugar de ello puedes usar la variable global uDatos.Datos y solo hacer uso de uDatos en las otras pantallas.

Una pregunta. ¿porque CodeTyphon? Si es un desarrollo personal sin animo de lucro, creo que puedes usar el Delphi Community Edition.
Esencialmente lo hago en CodeTyphon porque requiero practicar Delphi, o más bien ObjectPASCAL, y la verdad Lazarus no me satisface del todo. Volviendo al caso, mmmm variable global ¿en la pantalla principal?
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco

Última edición por TiammatMX fecha: 02-09-2021 a las 15:54:02.
Responder Con Cita
  #5  
Antiguo 02-09-2021
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Cita:
Empezado por TiammatMX Ver Mensaje
¡Excelente! Pero ¿en dónde ponerlo? Esa es la duda principal.
En el mismo lugar que has puesto:
Código Delphi [-]
Application.CreateForm(TfrmPrincipal, frmPrincipal);

Saludos!
Responder Con Cita
  #6  
Antiguo 12-09-2021
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Tengo curiosidad por saber porqué Lazarus no te satisface del todo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #7  
Antiguo 12-09-2021
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Tengo curiosidad por saber porqué Lazarus no te satisface del todo.
No, no me satisface. Y sobre todo, por el tema de la conexión a la base de datos que está en PostgreSQL. Lazarus es BASTANTE engorroso para conectar.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #8  
Antiguo 13-09-2021
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Entonces lo que no te satisface son los componentes de conexión con la base de datos (perdón por ser tan tiquismiquis ). Ten en cuenta que todo lo que tiene Code Typhon está disponible para Lazarus (se limita a embutirlo todo, a veces sin siquiera leer la licencia, por cierto); sólo tienes que instalarlo y en las últimas versiones es muy fácil. Abres Paquete > Administrar Paquetes en Línea y a disfrutar.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ampliando las características XML, solicitando apoyo de los que saben del tema. Al González [GH Freebrary] 1 08-08-2014 20:49:57
solicitando padrino FGarcia La Taberna 4 23-08-2007 22:40:18
Recordando Malvinas casacham La Taberna 33 09-05-2007 05:16:53
Recordando... D-MO Humor 0 17-05-2006 21:24:10
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59


La franja horaria es GMT +2. Ahora son las 02:46:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi