Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como se puede programar directamente??? (https://www.clubdelphi.com/foros/showthread.php?t=23927)

Antuan 02-08-2005 17:16:56

Como se puede programar directamente???
 
Hola como sigo siendo novato me gustaria me dijerais la forma de programar Delphi directamente.
Ejemplo:
Si creo un formulario principal y otro con una base de datos de mis amigos
Desde el formulario principal llamo al formulario de amigos.
En el formulario amigos tengo una conexion a una base de datos, un table y todo lo necesario para que este formulario funcione.
Bien todo esto esta puesto en las propiedades y en los eventos.
Pero lo que me gustaria saber es lo siguiente:
No hacerlo de esa manera sino al presentar el formulario amigos abrir la base de datos y unir la table por programacion en vez de hacerlo atraves de las propiedades.
En que parte del formulario tengo que hacer esto o en que evento.
Y lo mismo al salir del formulario que se cierre la base de datos.
O si sabeis de algun ejemplo que trabaje una base de datos en un formulario, pero que lo haga todo por programacion.
Muchas gracia por la ayuda que me dais poco a poco, a ver si en algun momento dejo de ser novato. Aunque de momento no lo veo facil.

roman 02-08-2005 17:47:17

Puedes usar el evento OnShow del formulario para hacer inicializaciones y el evento OnClose para terminar:

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);}
begin
  Table1.Active := true;
  ...
end;

procedure TForm1.FormClose(Sender: TObject;  var Action: TCloseAction);
begin
  Table1.Active := false;
  ...
end;

// Saludos

Lepe 02-08-2005 17:52:59

El inspector de objetos es una ayuda en la programación, pero te lo puedes saltar, Es decir, todo lo que haces con el Inspector de objetos, traducelo a instrucciones y listo.

Mediante el Inspector de objetos enlazas el Datasource a una tabla, por código sería exactamente lo mismo:
Código Delphi [-]
  Grid.Datasource := DTSTable1;
Siendo DTSTAble1 un Datasource asociado a la tabla1.

Normalmente querrás hacerlo en el evento OnCreate del formulario y cerrar la base de datos en el OnClose de la ventana.

Advertencia: cuando le das a la X de la ventana, ésta no se cierra, se oculta o bien se minimiza. Para hacer que se cierre deberás poner en el evento OnClose la instrucción Action := cafree;

Para cerrar la base de datos, supongo que tienes un TDatabase en tu ventana, pues simplemente llama al método correcto : Database1.Close; que cerrará todas las tablas que esten asociados a él.

Un saludo

Antuan 02-08-2005 17:54:43

Algun Ejemplo para gestionar una base de datos
 
Muchas gracias.
Sabes de algun ejemplo que gestione una base de datos por programacion directa.
Por si alguien lo tiene y me lo quieres enviar al correo
enrialva@terra.es

rastafarey 02-08-2005 19:58:14

Resp
 
Siempre usaras la propiedades solo que depende de cuando las. Como dices al principio la sasignas en diseño y com ote gustaria es asignarlas en ejecucion.

Si las propiedades no va a cambiar nunca su valor entonces asignalas en diseño. De lo contrario asignalas en ejecucion. Pero siempre te va a referir a las mismas propiedades y procedimientos.

Ha puedes hacerlo en le evento o create onshow. O onactivate Depende que queiras hacer o que pase durante la ejecucion.

Antuan 03-08-2005 06:34:28

Mi idea
 
Mi idea es de coger los elementos visuales realmente necesario en una form.
Como por ejemplo los que el usuario final ve. (un boton), etc.
Y los no visuales definirlos en forma de programacion directa.
He visto varios cursos para aprender Delphi y todos te enseñan a crear un ejemplo, es como enseñar al que sabe.
Al final aprende a hacer el ejemplo pero no sabes nada de Delphi.
Por lo que me habeis comentado donde tengo que definir mis componente es en el Show.Form y en el Create.Form
Asi lo ire haciendo poco a poco y supongo que con los fallos ire aprendiendo.
Si que me gustaria que me dierais un consejo.
Donde puedo encontrar algun ejemplo simple de esta forma de programacion directa.
Mas que nada para saber en que parte de la form puedo defini un componente o abrir un fichero etc.
En mi modo de ver esta seria la forma mejor de aprender a programar Delphi.
Muchas gracias por vuestra ayuda.

Descendents 03-08-2005 09:08:42

No se si lo que te estas refiriendo es esto por ejemplo
Código:

  Procedure CreateButton;
  var NewButton : TButton;
  begin
    NewButton := TButton.create(self);

    with NewButton do
      begin
        Name := 'Button1';

        Top := 30;
        Width := 100;
        Left := 5;

        Parent := self;

        Caption := 'Run-time button!';
      end;
  end;


Lepe 03-08-2005 12:19:00

La lógica impera en todo asunto, Si tienes una caja de texto, no sería buena idea abrir un fichero, recorrerlo y despues cerrarlo en el evento OnKeyPress de esa caja de texto (Tedit). En este caso, abriríamos el fichero en el OnCreate del Form, lo guardamos en una variable temporal y cerramos el archivo; en el evento Onkeypress del TEdit, simplemente recorremos la variable temporal buscando lo que necesitemos.

Este ejemplo es obvio, en otros casos no se ve tan claramente, y menos cuando tenemos ordenadores de 3 o 4 Ghz, discos duros de 7.200 rpm y DMA que son capaces de abrir el fichero y recorrecorlo en un plis plas. De aquí sale la famosa frase "En el ordenador donde programo funciona bien, pero en el ordenador del cliente funciona muy lento".

El que mejor enseña es la experiencia, así que codifica, haz pruebas y pregunta cosas concretas, te iremos respondiendo.

Un saludo

Antuan 03-08-2005 15:34:44

No es esto exactamente
 
No es eso exactamente lo que me he referido.
Es lo siguiente.
Los componentes esenciales del formulario como son las cajas de texto los botones los grid y mas componentes visibles esos por disemño.
y la apertura de una base de datos la union con el Grid o una table, las consultas SQL y demas esta por progamacion directa sin poner el componente en el formulario.
Esto es a lo que me referia.
Creo que esta seria la forma mas facil de aprender Delphi.
Lo que si queria es saber es en que parte del formulario he de poner esto.
---------------------------------
Recuerdo hace mucho tiempo que hice mis pinitos en Visual Basic y me cree una aplicacion que no acabe por no saber como seguir.
Fue una aplicacion en plan de prueba y apredizaje.
Y trataba de una base de datos con dos tablas una de clientes y otra de probeedores con un formulario principal y unos botones.
Con el boton Clientes llamaba al formulario clientes y este formulario tenia unas cajas de texto y un grid.
Y en el codigo de ese formulario tenia la apertura de la base de datos la asociacion de las cajas de texto a los campos de la base de datos y la consulta SQL.
Al pinchar en el formulario el boton clientes se abria el formulario cliente y me presentaba los datos de la tabla clientes.
----------------------------
Y mas o menos esto era lo que queria hacer con Delphi.
Lo que creo es que Delphi hay que poner todo esto en los eventos.
Y lo que no se es en que eventos hay que hacer eso.
Bueno ya me han explicado anteriormente en que eventos hay que ponerlo.
De todas formas he buscado ejemplos de esta forma de programacion y la verdad que no he visto nada.
Asi que lo que veo es que estoy muy equivocado en la forma de trabajar con Delphi.

mamcx 03-08-2005 16:57:46

Existen muchas maneras de hacerlo. Fundamentalmente, requiere sentarse un rato, repirar hondo y calmarse ;).

Primero que todo: Separa acceso a datos de Interfaz grafica. Es la forma sana y organizada de trabajar.

Supongamos tienes un Form y alli pones un TDataSource, para hacer la conexion a los controles que se hace visualmente, a lo RAD.

Entonces, ya sea que sobreescribes el contructor o agregas un funcion de creacion o implementas un conector dentro del form, invocas al datamodule o la unit que tiene el acceso a datos y enlazas... Basicamente:

Código Delphi [-]
 
 //EL DM o unit de acceso a datos
 
 function CargarClientes:TDataSet
 begin
     //Creas el dataset de forma manual , enlazas la conexion, ejecutas el SQL o procedimiento almacenado, retornos el dataset abierto...
     result := Clientes;
 end;
 
 //El formulario que invoca
 
 procedure AbrirClientes
 var
   oForm : TForm1;
   Datos: TDataSet;
 begin
   Datos := CargarClientes();
 
   oForm := TForm1.Create(Application, Datos);
    try
       //Mostrar
    finally
       //Liberar
    end;
 end;
 //El formulario
 TForm1
    public 
        constructor Create(AOwner:TComponente;Datos:TDataSet)
        begin
             inherited Create(AOwner);
             Ds.dataset := Datos;
        end;

Al separar el acceso a datos 1)Centralizas el codigo (ie: Un solo unit tiene todo lo que toca la conexion de la BD, facilitando la migracion) 2) Simplificas el enlaces 3)Aislas la parte visual de la no visual

Antuan 04-08-2005 08:04:38

Esto era a lo que me referia Mamcx
 
Esto era a lo que me queria referir y como bien dices Mamcx veo que no voy mal encaminado en el ejemplo que he puesto sobre lo que hice en Visual Basic. hace mucho tiempo.
He visto el ejemplo y como gran novato todavia lo maximo que he llegado es a crear una base de datos y ver todos los datos de la tabla.
Pero todo a base de diseño y usando las propiedades.
Nada de programacion.
Aun me queda mucho que aprender y de momento no llego a vuestra altura
He visto la estructura de codigo que me pones en el ejemplo y he cogido la idea.
Que es lo que yo pretendia.
Si no te rrobo demasiado tiempo, quizas con un ejemplo simple y completo del ejemplo que me pones de la base de datos de clientes o una base de datos de amigos me vendria muy bien.
Pues los ejemplos que es visto son todos a base de diseño y asi no se aprende.
De mi modo de ver son ejemplos hechos para las personas que saben y no para las que no saben como yo.
Entiendo que la casa no se hace por el tejado pero si se tienen unos buenos cimientos como los que tu me has comentado es lo mejor.
No quiero olvidar a los otros amigos que me ha dado sus consejos
Muchas gracias a todos
Asi que si teneis o tienes Mamcx un ejemplo y me lo quieres enviar a enrialva@terra.es
Atentamente
Antuan


He visitado la pagina que me recomiendas.


La franja horaria es GMT +2. Ahora son las 08:57:30.

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