Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Formularios con delphi (https://www.clubdelphi.com/foros/showthread.php?t=70126)

delphi 01-10-2010 01:20:28

Formularios con delphi
 
Buenas tardes, para comenzar comentarles que actualmente estoy usando el lenguaje object pascal en delphi, en esta oportunidad quiero solicitarles su ayuda ya que no entiendo muy bien como enlazar formularios, asi por ejemplo tengo un formulario madre y que este llame al formulario hijo, y asi llamandose ambos formularios por medio de botones y como saber en que parte va el código o lineas de código exacto para que ambos o varios formularios se llamen entre si, ya sea de manera local, privada, global, pública, como funciona todo eso, si me pueden mostrar ejemplos pues mucho mejor muchas gracias desde ya.

cloayza 01-10-2010 02:20:48

Bueno a ver si me sale facil la explicacion:

Supongamos que creas un nuevo proyecto.

Este automaticamente te crea un formulario que pasaria a ser el formulario principal.

Si examinas el codigo del formulario deberias ver algo asi:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

Si agregas un nuevo formulario a tu proyecto:

Código Delphi [-]
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.

Si ahora a tu formulario principal Form1, le agregas un boton y desde el evento de este boton llamas a Form2, esto quedaria asi (Fijate en el texto en negrita)

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton; //El boton que agrege al formulario principal
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses Unit2; //Se incluye la unidad que contiene el formulario a que deseo llamar.

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
     form2.show; //Llamo al formulario form2 de la unidad UNIT2.
end;

end.

Espero haber sido claro...

Saludos.

delphi 01-10-2010 02:22:18

es justo lo que necesitaba, y sobre los identificadores y tipos en negrita que me quieres decir?
otra cosa aprovechando tu explicación, las formas de hacerlo: publicas, locales, globales, privada, cómo los utilizo en los formularios?

gracias!

Casimiro Notevi 01-10-2010 02:29:40

Hola, delphi, bienvenido a clubdelphi ;)
Te aconsejo que leas nuestra guía de estilo, así podremos ayudarte mejor, muchas gracias.
Te recuerdo que en nuestra sección de FTP encontrarás información, libros, programas, utilidades, etc. Por ejemplo puedes encontrar el estupendo libro de Ian Marteens, "La cara oculta de delphi 4", que te servirá perfectamente para ir aprendiendo.
También tenemos la sección de trucos, está aquí.
En fin, una cantidad de información tremenda con la que tienes para llegar a ser todo un experto. Suerte.

delphi 01-10-2010 02:30:52

gracias, voy a dar un vistazo, saludos

cloayza 01-10-2010 02:38:39

Primero lo de las negritas es para que veas donde debes incluir la unidad que contiene el formulario que deseas invocar.

Bueno sobre las variables, hay vamos:

Suponiendo que estoy en el formulario principal

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
     privNumero_Entero:Integer;
     privNumero_Real:Real;
     privTexto:String;
     privLogico:Boolean;

  public
    { Public declarations }
     pubNumero_Entero:Integer;
     pubNumero_Real:Real;
     pubTexto:String;
     pubLogico:Boolean;
  end;

var
  Form1: TForm1;

  globalesNumero_Entero:Integer;
  globalesNumero_Real:Real;
  globalesTexto:String;
  globalesLogico:Boolean;

implementation

{$R *.dfm}

procedure TForm1.OnCreate(Sender: TObject);
begin
     //inicializando las variables...
     pubNumero_Entero:=100;
     pubNumero_Real   :=100.20;
     pubTexto:String   :='Cadena de texto';
     pubLogico:Boolean:=true; //puede ser true/false;
end;

end.

Las puedes definir de este modo.
1) Privadas, las cuales solo seran visibles en la unidad donde son declaradas.
2) Publicas, es decir se pueden accesar a ellas pero indicando el formulario al cual pertenecen.
3) Globales, puedes hacer referencia a ellas sin hace referencia al formulario.

Veremos el punto 2 y 3.

Suponiendo que ya estoy en Form2 y deseo acceder a las variables publicas (2) del formulatio principal (form1), debo hacerlo asi:

1) Debo incluir la unidad Unit1 en la Unit2, como?, Asi...

Código Delphi [-]
Unit2
...

implementation
uses Unit1;

Para hacer referencia a la variables debo hacer esto:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin
       Showmessage( Format('Variable Publica del Form Principal %d',[form1.pubNumero_Entero]);//Aqui estoy haciendo referencia al formulario donde estan definidas las variables...
end;

procedure TForm2.Button2lick(Sender: TObject);
begin
       Showmessage( Format('Variable Global del Form Principal %d',[globalNumero_Entero]);//Aqui estoy haciendo a la variable global, como esta definida fuera de la definicion del form1, con solo incluir la unidad esta disponible.
end;

los prefijos pub, priv, global, no son necesarios es solo como ejemplo.

Chuuuuuuuu, me canse...

Bueno eso por ahora.

Saludos

delphi 01-10-2010 02:42:17

Excelente cloayza, mejor explicado no puede estar, muchas gracias


La franja horaria es GMT +2. Ahora son las 13:58:00.

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