Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2006
oscarpinog oscarpinog is offline
Miembro
 
Registrado: jul 2006
Ubicación: santiago de Chile.
Posts: 18
Poder: 0
oscarpinog Va por buen camino
pasar valores de variables de un form a otro

me explico: form1 (principal) y form2 (relacionadas como about), en form 2 genero valores de variables a y b

como puedo pasar valores de variables de un form2 a form 1 y utilizarlas??

no soy experto y mas aún, ahora con delphi 2005 ando medio colgado..

saludos y muchisimas gracias.
Responder Con Cita
  #2  
Antiguo 10-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.510
Poder: 26
dec Va camino a la famadec Va camino a la fama
Hola,

Hay varias formas de conseguir lo que precisas. Puedes declarar las variables del "Form2" como variables públicas, de modo que estén accesibles desde "Form1". También puedes declarar dichas variables como propiedades de "TForm2", de manera que puedas acceder a las mismas, si es que las propiedades son públicas.

Si no lo son, o no quieres que lo sean, siempre puedes emplear algún método público que sirviera para iniciarlizar las propiedades/variables correspondientes desde "Form1". No sé yo si te he resuelto algo o te dejo con más dudas... si las tienes ya sabes que puedes exponerlas por aquí para que alguien trate de echarte una mano.

Un ejemplo utilizando propiedades públicas:

Código Delphi [-]
// Unit1.pas

unit Unit1;

interface

uses
  Forms, Classes, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Unit2; // TForm2

procedure TForm1.Button1Click(Sender: TObject);
var
  frm: TForm2;
begin
  // Instanciamos
  frm := TForm2.Create(Self);
  {
    Damos el valor que sea menester
    a las propiedades "A" y "B" del
    formulario "TForm2"
  }
  frm.A := 'Una cadena';
  frm.B := 'Otra cadena';

  // Mostramos el formulario (por ejemplo)
  frm.ShowModal;

  // Y, por último, destruimos el objeto "frm"
  frm.Free;
end;

end.

Código Delphi [-]
// Unit2.pas

unit Unit2;

interface

uses
  Forms;

type
  TForm2 = class(TForm)
  private
    {
      Un par de variables privadas
      que almacenarán los valores de
      las propiedades de más abajo.
    }
    FA, FB: string;
  public
    // Propiedades públicas A y B
    property A: string read FA write FA;
    property B: string read FB write FB;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
__________________
David Esperalta
www.davidesperalta.com

Última edición por dec fecha: 10-07-2006 a las 21:42:45.
Responder Con Cita
  #3  
Antiguo 10-07-2006
oscarpinog oscarpinog is offline
Miembro
 
Registrado: jul 2006
Ubicación: santiago de Chile.
Posts: 18
Poder: 0
oscarpinog Va por buen camino
pasar valores de variables de un form a otro

david muchas gracias por tu ayuda..

Sabes no entendi como funcionan las propiedades de las variables fa y fb en unit2 y como relaciono eso con un valor (por ejemplo, que provenga de una casilla de texto)

y no entiendo el procedimiento de unit1, que es frm y pq se crea?? que debe hacer en frm.A y frm.B ?? (que aparte no le lo reconoce como bueno en el script)

quede bien mas colgado... sabes donde pueda quiza leer al respecto??

saludos y mucha gracias denuevo.
Responder Con Cita
  #4  
Antiguo 11-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 12
nemesio Va por buen camino
Hola

Yo te lo diría de la siguiente forma:

En la seccion var de el Form2, declaras las variables A y B. Luego desde el Form1 para accesarlas escribes: Unit2.A , Unit2.B.
Claro que debes incluir la unit2 en el use de la Unit1.

Suerte.
Responder Con Cita
  #5  
Antiguo 11-07-2006
oscarpinog oscarpinog is offline
Miembro
 
Registrado: jul 2006
Ubicación: santiago de Chile.
Posts: 18
Poder: 0
oscarpinog Va por buen camino
pasar valores de variables de un form a otro

Hola, Miren coloco esto... y por mas que le doy vueltas, no me pasa el valor de editabout.text hacia editform1.text.. de hecho me borra el contenido original de editform1 y seria todo...
aca va el codigo:

Código Delphi [-]
// codigo de unit1 (programa principal)
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Editform1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A,B: String;

implementation

uses about;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 frm: Taboutbox;
begin
  frm:= Taboutbox.Create(self);
//  frm.A:= z    ;
//  frm.B:= x    ;

  editform1.text:=frm.A;

  frm.showmodal;
  frm.free;



//aboutbox.ShowModal;
end;

end.

// codigo del about
unit ABOUT;

interface

uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls;

type
  TAboutBox = class(TForm)
    Panel1: TPanel;
    OKButton: TButton;
    ProgramIcon: TImage;
    ProductName: TLabel;
    Version: TLabel;
    Copyright: TLabel;
    Comments: TLabel;
    editabout: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    Fa, Fb: String;   { Private declarations }
  public
    Property A: String read Fa Write Fa; { Public declarations }
    Property B: String read Fb Write Fb;
  end;

var
  AboutBox: TAboutBox;

implementation

{$R *.dfm}

procedure TAboutBox.Button1Click(Sender: TObject);
begin
A:= editabout.Text ;
end;

end.

Gracias por todo, de verdad se pasaron chiquilllos!

Última edición por dec fecha: 11-07-2006 a las 19:57:55.
Responder Con Cita
  #6  
Antiguo 11-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 22
Lepe Va por buen camino
Si lo hace, pero no recoges el valor:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
frm: Taboutbox;
begin
frm:= Taboutbox.Create(self);
// frm.A:= z ;
// frm.B:= x ;

if frm.showmodal =mrOk then
begin
  editform1.text:=frm.A;
  ShowMessage(editform1);
end;
frm.free;

El punto está que al ser modal, cuando se pulsa en el Button1 (que supongo será un TBitBtn y que devuelve mrOk) es donde se asigna a "A" el valor que debe retornar, por ello tienes que esperar a que se retorne mrOk o bien mrCancel.

Antes de pulsar el botón, la propiedad "A" tendrá un valor indefinido (o por defecto).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 11-07-2006
oscarpinog oscarpinog is offline
Miembro
 
Registrado: jul 2006
Ubicación: santiago de Chile.
Posts: 18
Poder: 0
oscarpinog Va por buen camino
Heyy!! compadre diste en el clavo, funciona perfecto!! 1000 gracias!!!

Se los agradezco infinito, antes mis programas eran de 1 form y eran gigantes apareciendo y desapareciendo cosas..jaaj
Gracias!!!
Responder Con Cita
  #8  
Antiguo 12-08-2007
oscarpinog oscarpinog is offline
Miembro
 
Registrado: jul 2006
Ubicación: santiago de Chile.
Posts: 18
Poder: 0
oscarpinog Va por buen camino
Hola a todos denuevo, saben ahora necesito pasar del form1 al form2 y no me resulta. se me cae el programa por violacion de acceso de no se que cosa.

recordando. logre gracias a uds. pasar datos desde el form2 al form1(main) y ahora me gustaria poder hacer tambien lo contrario.
aqui va el codigo:
--------------------------FORM1 (main)
unit MainProgramFPv1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Buttons,
Mask, XPMan;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
GroupBox1: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
GroupBox2: TGroupBox;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
DBEdit14: TDBEdit;
DBEdit15: TDBEdit;
DBEdit16: TDBEdit;
DBEdit17: TDBEdit;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
ADOTable2: TADOTable;
Label19: TLabel;
DBEdit13: TDBEdit;
Label26: TLabel;
DBEdit19: TDBEdit;
DBNavigator2: TDBNavigator;
GroupBox4: TGroupBox;
INGRESOS: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Isalario: TDBEdit;
Idividendo: TDBEdit;
Ibienrais: TDBEdit;
Inegocio: TDBEdit;
Iinteres: TDBEdit;
Itotal: TDBEdit;
BI1: TBitBtn;
BI2: TBitBtn;
BI3: TBitBtn;
BI4: TBitBtn;
BI5: TBitBtn;
EGRESOS: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label24: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit18: TDBEdit;
BE1: TBitBtn;
BE2: TBitBtn;
BE3: TBitBtn;
BE4: TBitBtn;
BE5: TBitBtn;
BE6: TBitBtn;
BE7: TBitBtn;
GroupBox3: TGroupBox;
DataSource1: TDataSource;
ADOTable1: TADOTable;
XPManifest1: TXPManifest;
Label25: TLabel;
DBEdit20: TDBEdit;
BA1: TBitBtn;
BA2: TBitBtn;
BA3: TBitBtn;
BA4: TBitBtn;
BO1: TBitBtn;
BO2: TBitBtn;
BO3: TBitBtn;
BO4: TBitBtn;
BO5: TBitBtn;
BO6: TBitBtn;
BO7: TBitBtn;
Edit1form1: TEdit;
DBNavigator3: TDBNavigator;
DBComboBox1: TDBComboBox;
Label27: TLabel;
procedure BI1Click(Sender: TObject);
procedure BI2Click(Sender: TObject);
private
{ Private declarations }
Fc, Fd: Integer;
public
{ Public declarations }
Property C: Integer Read Fc Write Fc;
Property D: Integer Read Fd Write Fd;
end;

var
Form1: TForm1;
A,B: String;

implementation
{$R *.dfm}

uses ventana1;

procedure TForm1.BI1Click(Sender: TObject);
begin
Form1.C:=1; // boton 1
if Form2.ShowModal=mrok then
edit1form1.Text:=Form2.A;
end;
end.
--------------------------------FORM 2

unit ventana1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, ADODB, Mask, DBCtrls;

type
TForm2 = class(TForm)
Edit1form2: TEdit;
BitBtn1: TBitBtn;
Gsalarios: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DataSource1: TDataSource;
ADOTable1: TADOTable;
Label11: TLabel;
DBEdit11: TDBEdit;
Gdividendo: TGroupBox;
procedure BitBtn1Click(Sender: TObject);

private
{ Private declarations }
Fa, Fb: String;
public
{ Public declarations }
Property A: String Read Fa Write Fa;
Property B: String Read Fb Write Fb;
end;

var
Form2: TForm2;
C,D: Integer;

implementation

uses MainProgramFPv1;

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
A:=Edit1form2.Text;
end;

begin
if Form1.C = 1 then // aqui me muestra el error de excepcion nose que.. y se muere//
Form2.label2.Visible := true;
end.
--------------------------
Gracias
Oscar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08
Asignación de valores a variables BlueSteel Varios 1 19-01-2005 15:04:15
Pasar variables del form al script php vecino PHP 9 07-03-2004 22:59:05
Pasar información de un form a otro davidgaldo Varios 3 10-02-2004 19:00:34
Traspasar valores de un form a otro por parametros andre Varios 3 05-06-2003 22:44:16


La franja horaria es GMT +2. Ahora son las 22:23:36.


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