passar valores de variaveis de um form para outro no delphi 7
Preciso de ajuda amigos. Estou tentando passar valores de variaveis de um form para outro chamado em tempo de execução, mas não estou conseguindo. Cheguei a ver algumas situações no forum, mas mesmo assim nao funcionou. A idéia é a seguinte: imagine que estou no form de consulta de titulos e ao clicar em um determinado titulo, chamo outro form para realizar alteração, desta forma quero pegar os valores chaves armazena-los em variaveis e transporta-las para outro form, assim desta forma, ao ser iniciado o outro form na procedure create, pego as variaveis e faço um locate no banco para trazer o registro. Por favor me ajudem.
Carlos Cabral
Curtidas 0
Respostas
Marco Salles
30/07/2012
Porque vc quer fazer um Locate para trazer o mesmo registro ???
Vc não utiliza DataModulo ???
Vc não utiliza DataModulo ???
GOSTEI 0
Carlos Cabral
30/07/2012
sim e não. veja, quando estou em consulta em determinado form como dito, criei outro form com a finalidade de incluir ou alterar. desta forma, passando as variaveis vou saber se estou incluindo ou alterando, que no caso de alteracao, trarei o registro na ativa para proceder com a mudanca no caso de ser desejada.
GOSTEI 0
Wilton Júnior
30/07/2012
Cria uma variavel global, cria uma unit e dentro dessa unit todas variaveis que vai usar.
No evento onshow do forma inicie elas.
Espero ter ajudado
Deus o abençoe.
No evento onshow do forma inicie elas.
Espero ter ajudado
Deus o abençoe.
GOSTEI 0
Carlos Cabral
30/07/2012
Abaixo esta como estou tentando fazer
Form2
public
passacampo: Integer;
Form1
botaoclick
Tform2.create(Self)
form2.passacampo := 001;
form2.showmodal;
Freeandnill(form2);
Sem contar outras várias formas que tentei, mas toda vez que vou ver a variavel esta sem valor
Form2
public
passacampo: Integer;
Form1
botaoclick
Tform2.create(Self)
form2.passacampo := 001;
form2.showmodal;
Freeandnill(form2);
Sem contar outras várias formas que tentei, mas toda vez que vou ver a variavel esta sem valor
GOSTEI 0
Marco Salles
30/07/2012
Olha so , não é a forma mais indicada , mas irá funcionar
form2:=Tform2.create(nil);
try
form2.passacampo := 001;
form2.showmodal;
finally
Freeandnill(form2);
end;
form2:=Tform2.create(nil);
try
form2.passacampo := 001;
form2.showmodal;
finally
Freeandnill(form2);
end;
GOSTEI 0
William
30/07/2012
Colega em qual evento vc tenta capturar esse valor, se for no evento OnCreate do form2 não vai funcionar mesmo, pq vc primeiro cria o form e depois alimenta a variável, faz um teste no OnShow ou coloca um botão no form2 e chama o valor da variável.
GOSTEI 0
Carlos Cabral
30/07/2012
Meu é exatamente o que estou fazendo, também tentei no onShow. Eu acho que não estou sabendo como utilizar. Sabe eu sou novato no delphi, to apanhando um pouco. Mas nada do que eu tentei esta funcionando.
GOSTEI 0
William
30/07/2012
Tenta debugar linha por linha, assim vc acompanha o valor da variável ...
GOSTEI 0
Carlos Cabral
30/07/2012
Fiz isto, por isso descobri que o valor não esta passando.
unit CtpagarDigitacaoTitulos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls,
DBClient;
type
Tfrmctpagartitulos = class(TForm)
bbinclusao: TBitBtn;
bbalteracao: TBitBtn;
bbexclusao: TBitBtn;
bbimpressao: TBitBtn;
bbconfirmacao: TBitBtn;
bbcancela: TBitBtn;
bbsair: TBitBtn;
bbconsulta: TBitBtn;
gbfiltros: TGroupBox;
dsctpfornecedor: TDataSource;
dstitulo: TDataSource;
dsitem: TDataSource;
dsvencimento: TDataSource;
dsdesconto: TDataSource;
gbtitulos: TGroupBox;
dbtitulos: TDBGrid;
gbitens: TGroupBox;
dbitems: TDBGrid;
gbvencimentos: TGroupBox;
dbvencimentos: TDBGrid;
gbdescontos: TGroupBox;
dbdescontos: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure bbsairClick(Sender: TObject);
procedure dbtitulosCellClick(Column: TColumn);
procedure dbvencimentosCellClick(Column: TColumn);
procedure bbexclusaoClick(Sender: TObject);
procedure bbinclusaoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmctpagartitulos: Tfrmctpagartitulos;
var empaux : Integer;
var fornecaux : Integer;
var notaaux : Integer;
var serieaux : String;
var dataaux : TDate;
var tituloatual : String;
var transporte : String;
implementation
uses CtpagarDM, CtpagarDigitacaoTitulos2;
{$R *.dfm}
procedure Tfrmctpagartitulos.FormCreate(Sender: TObject);
begin
.
.
.
.
.
.
.
.
.
.
.
end;
Aqui neste ponto é a chamada do outro formulario. Eu preciso passar o valor de uma variavel para o outro form.
Exemplo:
numero_nota_fiscal := 00001;
serie_nota_fiscal : U;
procedure Tfrmctpagartitulos.bbinclusaoClick(Sender: TObject);
begin
with Tfrmctpagartitulos2.Create(Self) do
try
frmctpagartitulos2.ShowModal;
finally
FreeAndNil(frmctpagartitulos2);
end;
.
.
.
.
.
.
end;
end.
Aqui o Outro form.
unit CtpagarDigitacaoTitulos2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Buttons, Mask, Grids, DBGrids, ExtCtrls, DB,
DBClient;
type
Tfrmctpagartitulos2 = class(TForm)
pnprincipal: TPanel;
lbcodfornec: TLabel;
lbnumerotitulo: TLabel;
lbserietitulo: TLabel;
lbdataemissao: TLabel;
lbvalortitulo: TLabel;
lbdescontos: TLabel;
lbjuros: TLabel;
lbmulta: TLabel;
lbliquido: TLabel;
lbqtdeitens: TLabel;
lbqtdecobranca: TLabel;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure trazregistrotitulo;
procedure trazregistroitem;
procedure trazregistrovencimento;
procedure trazregistrodesconto;
public
{ Public declarations }
end;
var
frmctpagartitulos2: Tfrmctpagartitulos2;
opcaon : Integer;
opcaoprocura : Integer;
opcaovalidar : Boolean;
contador : Integer;
contador3 : Integer;
contadoritem : Integer;
contadorvencimento : Integer;
contadordesconto : Integer;
valorauxiliar : Currency;
codigoempresa : Integer;
implementation
uses CtpagarDM, DateUtils;
{$R *.dfm}
procedure Tfrmctpagartitulos2.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key := #0;
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
Neste ponto eu imagino que seja onde vou pegar os valores das variaveis
procedure Tfrmctpagartitulos2.FormCreate(Sender: TObject);
begin
dmCtpagar.cdsCtpFornecedor.Open;
dmCtpagar.cdsCtpGrupo.Open;
dmCtpagar.cdsCtpTitulo.Open;
dmCtpagar.cdsCtpItem.Open;
dmCtpagar.cdsCtpVencimento.Open;
dmCtpagar.cdsCtpDesconto.Open;
cdsctpprincipaltitulo.Open;
cdsctpprincipalitem.Open;
cdsctpprincipalvencimento.Open;
cdsctpprincipaldesconto.Open;
codigoempresa := 001;
opcaon := 1;
end;
procedure Tfrmctpagartitulos2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dmCtpagar.cdsCtpFornecedor.Close;
dmCtpagar.cdsCtpGrupo.Close;
dmCtpagar.cdsCtpTitulo.Close;
dmCtpagar.cdsCtpItem.Close;
dmCtpagar.cdsCtpVencimento.Close;
dmCtpagar.cdsCtpDesconto.Close;
cdsctpprincipaltitulo.Close;
cdsctpprincipalitem.Close;
cdsctpprincipalvencimento.Close;
cdsctpprincipaldesconto.Close;
end;
procedure Tfrmctpagartitulos2.dbeprincipalcodigoExit(Sender: TObject);
begin
.
.
.
.
.
end;
.
.
.
.
end.
unit CtpagarDigitacaoTitulos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls,
DBClient;
type
Tfrmctpagartitulos = class(TForm)
bbinclusao: TBitBtn;
bbalteracao: TBitBtn;
bbexclusao: TBitBtn;
bbimpressao: TBitBtn;
bbconfirmacao: TBitBtn;
bbcancela: TBitBtn;
bbsair: TBitBtn;
bbconsulta: TBitBtn;
gbfiltros: TGroupBox;
dsctpfornecedor: TDataSource;
dstitulo: TDataSource;
dsitem: TDataSource;
dsvencimento: TDataSource;
dsdesconto: TDataSource;
gbtitulos: TGroupBox;
dbtitulos: TDBGrid;
gbitens: TGroupBox;
dbitems: TDBGrid;
gbvencimentos: TGroupBox;
dbvencimentos: TDBGrid;
gbdescontos: TGroupBox;
dbdescontos: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure bbsairClick(Sender: TObject);
procedure dbtitulosCellClick(Column: TColumn);
procedure dbvencimentosCellClick(Column: TColumn);
procedure bbexclusaoClick(Sender: TObject);
procedure bbinclusaoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmctpagartitulos: Tfrmctpagartitulos;
var empaux : Integer;
var fornecaux : Integer;
var notaaux : Integer;
var serieaux : String;
var dataaux : TDate;
var tituloatual : String;
var transporte : String;
implementation
uses CtpagarDM, CtpagarDigitacaoTitulos2;
{$R *.dfm}
procedure Tfrmctpagartitulos.FormCreate(Sender: TObject);
begin
.
.
.
.
.
.
.
.
.
.
.
end;
Aqui neste ponto é a chamada do outro formulario. Eu preciso passar o valor de uma variavel para o outro form.
Exemplo:
numero_nota_fiscal := 00001;
serie_nota_fiscal : U;
procedure Tfrmctpagartitulos.bbinclusaoClick(Sender: TObject);
begin
with Tfrmctpagartitulos2.Create(Self) do
try
frmctpagartitulos2.ShowModal;
finally
FreeAndNil(frmctpagartitulos2);
end;
.
.
.
.
.
.
end;
end.
Aqui o Outro form.
unit CtpagarDigitacaoTitulos2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Buttons, Mask, Grids, DBGrids, ExtCtrls, DB,
DBClient;
type
Tfrmctpagartitulos2 = class(TForm)
pnprincipal: TPanel;
lbcodfornec: TLabel;
lbnumerotitulo: TLabel;
lbserietitulo: TLabel;
lbdataemissao: TLabel;
lbvalortitulo: TLabel;
lbdescontos: TLabel;
lbjuros: TLabel;
lbmulta: TLabel;
lbliquido: TLabel;
lbqtdeitens: TLabel;
lbqtdecobranca: TLabel;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure trazregistrotitulo;
procedure trazregistroitem;
procedure trazregistrovencimento;
procedure trazregistrodesconto;
public
{ Public declarations }
end;
var
frmctpagartitulos2: Tfrmctpagartitulos2;
opcaon : Integer;
opcaoprocura : Integer;
opcaovalidar : Boolean;
contador : Integer;
contador3 : Integer;
contadoritem : Integer;
contadorvencimento : Integer;
contadordesconto : Integer;
valorauxiliar : Currency;
codigoempresa : Integer;
implementation
uses CtpagarDM, DateUtils;
{$R *.dfm}
procedure Tfrmctpagartitulos2.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key := #0;
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
Neste ponto eu imagino que seja onde vou pegar os valores das variaveis
procedure Tfrmctpagartitulos2.FormCreate(Sender: TObject);
begin
dmCtpagar.cdsCtpFornecedor.Open;
dmCtpagar.cdsCtpGrupo.Open;
dmCtpagar.cdsCtpTitulo.Open;
dmCtpagar.cdsCtpItem.Open;
dmCtpagar.cdsCtpVencimento.Open;
dmCtpagar.cdsCtpDesconto.Open;
cdsctpprincipaltitulo.Open;
cdsctpprincipalitem.Open;
cdsctpprincipalvencimento.Open;
cdsctpprincipaldesconto.Open;
codigoempresa := 001;
opcaon := 1;
end;
procedure Tfrmctpagartitulos2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dmCtpagar.cdsCtpFornecedor.Close;
dmCtpagar.cdsCtpGrupo.Close;
dmCtpagar.cdsCtpTitulo.Close;
dmCtpagar.cdsCtpItem.Close;
dmCtpagar.cdsCtpVencimento.Close;
dmCtpagar.cdsCtpDesconto.Close;
cdsctpprincipaltitulo.Close;
cdsctpprincipalitem.Close;
cdsctpprincipalvencimento.Close;
cdsctpprincipaldesconto.Close;
end;
procedure Tfrmctpagartitulos2.dbeprincipalcodigoExit(Sender: TObject);
begin
.
.
.
.
.
end;
.
.
.
.
end.
GOSTEI 0
William
30/07/2012
A primeiro form está assim?
procedure Tfrmctpagartitulos.bbinclusaoClick(Sender: TObject);
begin
with Tfrmctpagartitulos2.Create(Self) do
try
numero_nota_fiscal := 00001;
serie_nota_fiscal : U;
frmctpagartitulos2.ShowModal;
finally
FreeAndNil(frmctpagartitulos2);
end;
GOSTEI 0
Carlos Cabral
30/07/2012
Sim. Esta desta forma. Agora no segundo form eu preciso ter esses valores em mãos.
GOSTEI 0
Carlos Cabral
30/07/2012
Faltou apenas que antes do Numero_nota e Serie_nota esta o nome do formulario2 no caso frmCtpagarTitulos2.Numero_Nota e...
GOSTEI 0
William
30/07/2012
Repare neste teste usando 2 forms, o form1 vai passar um valor para variável do form2:
Note que testo 2 vezes, uma no evento OnShow do form2 e outra no evento OnClick do botão. Funcionou normalmente....
// Unit do form1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FMTBcd;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
try
Form2 := TForm2.Create(self);
//Passo o valo 001 para variável que está no form2
campo := 001;
Form2.ShowModal;
finally
FreeAndNil(form2);
end;
end;
end.
//Unit do form2
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
end;
var
Form2: TForm2;
campo: Integer; // Declaração da variável
implementation
{$R *.dfm}
procedure TForm2.btn1Click(Sender: TObject);
begin
ShowMessage(IntToStr(campo));
end;
procedure TForm2.FormShow(Sender: TObject);
begin
ShowMessage(IntToStr(campo));
end;
end.
Note que testo 2 vezes, uma no evento OnShow do form2 e outra no evento OnClick do botão. Funcionou normalmente....
GOSTEI 0
Carlos Cabral
30/07/2012
Vou tentar e te falo já
GOSTEI 0
Carlos Cabral
30/07/2012
Voce é o cara. Na realidade o botão não é o que quero, mas entendi o fundamento, pô meu, valeu.
GOSTEI 0
William
30/07/2012
Disponha precisando estamos por aí ...
GOSTEI 0
Carlos Cabral
30/07/2012
Cara só mais uma perguntinha, pois tudo que fiz deu certo. Após o FormCreate o form já esta criado, porém quando o focus cair sobre o primeiro campo na lista, eu preciso operar as opcoes antes, pois dai vou saber o que fazer, neste caso o OnShow é executado primeiro que o focus ?
GOSTEI 0
Carlos Cabral
30/07/2012
Talvez eu não tenha me explicado direito. Vou tentar ser bem explicito. Fiz um form onde os grids dos titulos trazem todas as informações necessarias. Blz. O usuário poderá consultar todas as informacoes que neles estao contidas. Neste form posso excluir, incluir ou alterar um titulo. Na exclusao é facil e posso nele mesmo verificar se o usuario tem essa possibilidade. Caso o usuario queira incluir, ou alterar ele ira clicar nos botoes, o que chamara o outro form, que tem de servir para a mesma funcao. Ora se crio o form atraves do Create, em seguida a este a execucao já será executada, após isto o focus será para o primeiro campo da tela. Entao antes desse focus eu preciso executar algumas situacoes. A pergunta é: O que esta entre o Create e o Focus do campo ? Seria o OnShow, por acaso ?
GOSTEI 0
William
30/07/2012
Sim, use o OnShow ..
GOSTEI 0
Cauê Nishijima
30/07/2012
Eu sei que o problema já foi resolvido, mas se eu puder dar minha opinião.
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
GOSTEI 0
Marco Salles
30/07/2012
Eu sei que o problema já foi resolvido, mas se eu puder dar minha opinião.
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
concordo com vc amigo , ja disse issto desde do inicio (Funcionar porém ...)
GOSTEI 0
Cauê Nishijima
30/07/2012
Olá MARCO ANTONIO SALLES tudo bem? Não sei você, mas eu tenho dificuldade de encontrar programadores Delphi que tenham conhecimento em O.O. acredito que seja pela grande facilidade que o Delphi fornece, mas Delphi é uma linguagem completamente O.O. assim como Java e C#.
E acredito que com os investimentos que a Embarcadeiro vem fazendo nessa grande ferramente, agora com o firemonkey, DataSnap aperfeiçoado, RTTI, Unicode, métodos anônimos, etc...Só falta agora os programdores começarem a utilizar O.O. e Padrões de Projetos, mas a Embarcadeiro vem investindo nisso com as certificações e os novos cursos oficiais.
Qual sua opinião sobre O.O. no mundo dos programadores Delphi? Você também tem essa dificuldade de encontrar desenvolvedores O.O.?
Att.
Cauê Nishijima
E acredito que com os investimentos que a Embarcadeiro vem fazendo nessa grande ferramente, agora com o firemonkey, DataSnap aperfeiçoado, RTTI, Unicode, métodos anônimos, etc...Só falta agora os programdores começarem a utilizar O.O. e Padrões de Projetos, mas a Embarcadeiro vem investindo nisso com as certificações e os novos cursos oficiais.
Qual sua opinião sobre O.O. no mundo dos programadores Delphi? Você também tem essa dificuldade de encontrar desenvolvedores O.O.?
Att.
Cauê Nishijima
GOSTEI 0
Marco Salles
30/07/2012
Abri um outro tópico para discutir este assunto , para não poluir este tópico cujo o assunto é diferente desde
obrigado
[]sds
obrigado
[]sds
GOSTEI 0
Carlos Cabral
30/07/2012
Eu sei que o problema já foi resolvido, mas se eu puder dar minha opinião.
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
A forma com que foi resolvido, realmente funciona perfeitamente, mas o ideal, que já esta comprovando, é a utilização da Orientação a Objeto, você criaria um objeto do tipo Titulo, e passaria o objeto totalmente populado pelo Create para o outro form, você trabalha jogando objetos de um lado para outro, facilita muito.
Se for do seu interesse posso criar um exemplo simples e te enviar.
Abraço
Cauê Nishijima
concordo com vc amigo , ja disse issto desde do inicio (Funcionar porém ...)
Ola Caue
Gostaria de saber sim como posso faze-lo ?
GOSTEI 0
Carlos Cabral
30/07/2012
Gostaria de saber como ? Inclusive seria muito mais facil pois poderia estar andando com esta informacao para qualquer lugar
dentro dos forms que por ventura venham a ser chamado
dentro dos forms que por ventura venham a ser chamado
GOSTEI 0
Marco Salles
30/07/2012
Gostaria de saber como ? Inclusive seria muito mais facil pois poderia estar andando com esta informacao para qualquer lugar
dentro dos forms que por ventura venham a ser chamado
dentro dos forms que por ventura venham a ser chamado
é assim
1) Vc define o Objeto . No meu caso vou trabalhar com Record
Type
TParametros = Record
numero_nota_fiscal :String;
serie_nota_fiscal : char;
End;
2)depois vc define um constructor Personalizado , pode ser tb um ShowModal , Vou definir o constructor
na secçã Public do form a ser chamado
........
public
{ Public declarations }
constructor create(Aowner:TComponent;Parametros:TParametros);overload;
end;
3) Vc defibe o campo na secção Private deste form do tipo do Objeto a ser Passado
private
FParametros:TParametros;
4) Vc implementa o método do constructor
constructor TForm3.create(Aowner: TComponent;Parametros:TParametros);
begin
inherited create(Aowner);
FParametros:=Parametros;
end;
5) Vc utiliza o objeto como quiser
procedure TForm3.Button1Click(Sender: TObject);
begin
Showmessage(FParametros.numero_nota_fiscal);
end;
6) No form que vc esta vc chama do modo
var
campo:TParametros;
begin
campo.numero_nota_fiscal:=0001;
campo.serie_nota_fiscal:=U;
Form3:=TForm3.create(nil,campo); // No meu casoo form a ser chamado é o Form3
try
form3.ShowModal;
finally
FreeAndNil(form3);
end;
end;
Deste modo vc trafega informações de um form para outro utilizando POO
entendeu ????
GOSTEI 0
Carlos Cabral
30/07/2012
Aparentemente Sim. Estou terminando o módulo. Vou implementar essa função e ver como fica. Valeu
GOSTEI 0
Marco Salles
30/07/2012
Aparentemente Sim. Estou terminando o módulo. Vou implementar essa função e ver como fica. Valeu
Ok...
GOSTEI 0
Carlos Cabral
30/07/2012
Aparentemente Sim. Estou terminando o módulo. Vou implementar essa função e ver como fica. Valeu
Ok...
Olá Marcos. Quanto tempo heim. Hoje as coisas estão bem diferentes, preciso de uma ajuda sua se possivel. Como faço para passar valores de variaveis entre 2 executaveis ? Estou usando o comando WinExec, mas não consigo enxergar o valor da variavel e sim somente o nome, por exemplo: WinExec('teste2.exe codigousuario',SW_NORMAL);
quando o projeto TESTE2 é executado ao invés de enxergar o valor que esta dentro de codigousuario eu consigo ver o nome da variavel. Você pode me ajudar por favor ? Obrigado.
GOSTEI 0
Marco Salles
30/07/2012
Olá tudo Bem
tente assim
ps) CodigoUsuario do tipo STRING
tente assim
WinExec(PChar(´teste2.exe'+codigousuario), Sw_ShowNormal);
ps) CodigoUsuario do tipo STRING
GOSTEI 0
Carlos Cabral
30/07/2012
Olá tudo Bem
tente assim
ps) CodigoUsuario do tipo STRING
tente assim
WinExec(PChar(´teste2.exe'+codigousuario), Sw_ShowNormal);
ps) CodigoUsuario do tipo STRING
Cara. Apanhei um pouco, e tirei de um lado e coloquei por outro, quase joguei o micro fora, mas consegui. Deu certo. Agradeço demais você. Você me ajudou demais. Espero um dia poder te ajudar. Muito Obrigado.
Montei da seguinte forma e deu certissimo.
WinExec(Pchar('ContasPagar.exe '+par1empresa+' '+par2usuario+''),SW_NORMAL);
Obrigado mais uma vez.
GOSTEI 0
Marco Salles
30/07/2012
Obrigado amigo pelo feedback
[]sds
[]sds
GOSTEI 0