Fórum Evento num componentem Criado em tempo de execução #294343
02/09/2005
0
Seguinte:
tenho 3 formulários.
Form1:
(Label1) (edit1)
Topo: [ ]
(Label2) (edit2)
Esquerda: [ ]
[ Continuar ] (Button1)
quando clicar no botão, chamar o form2.
no form dois tem uma procedure chamada Carregar... Nela tem uma rotina pra criar um Tedit e um Tbutton no formulário 3, ou seja, criar estes dois componentes em tempo de execução.
até ai eu consegui. Só não estou conseguindo, criar um evento no botão do formulário 3. Que estava querendo colocar um showmessage como o text do edit criado.
Alguém podi dá um help??
ai está o código
TFORM1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
end.
TFORM2:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls;
type
TForm2 = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure CliquedoBotaoClick (Sender : TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit3, Unit1;
{$R *.dfm}
procedure Tform2.CliquedoBotaoClick (Sender:TObject);
begin
ShowMessagePos(´Consegui Porraaa´, -1, -1);
end;
procedure Carrega;
var botao: Tbutton;
begin
form3.show;
with TEdit.Create(Application) do
begin
Parent := Form3;
Left := strtoint(form1.Edit2.Text);
Top := strtoint(form1.Edit1.Text);
end;
Botao := Tbutton.Create(form3);
with Botao do
begin
OnClick := NIL;
Parent := Form3;
height := 32;
width := 128;
caption := ´Processar´;
left := (Form3.ClientWidth - width) div 2;
top := (Form3.ClientHeight - height) div 2;
OnClick := CliquedoBotaoClick; [b] // AQUI ESTÁ DANDO ERRO[/b] end;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Carrega;
end;
end.
TFORM3:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm3.FormShow(Sender: TObject);
begin
form2.WindowState := wsMinimized;
end;
procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
form2.Close;
end;
end.Franklinjavier
Curtir tópico
+ 0Posts
03/09/2005
Marco Salles
1) Primeiro
Troque a instruçõa:
procedure Tform2.CliquedoBotaoClick (Sender:TObject);
begin
ShowMessagePos(´Consegui Porraaa´, -1, -1);
end;
Troque a mensagem ShowMessagePos(´Consegui Porraaa´, -1, -1); Por uma mensagem de amor.. Tipo isso
procedure Tform2.CliquedoBotaoClick (Sender:TObject);
begin
ShowMessagePos(´Eu Amo as Mulheres´, -1, -1);
end;
2)Segundo
Não esta compilando porque a procedure carrega não reconhece a proceudre CliquedoBotaoClick que é um método Privativo da classe TForm2
Troque
por
onClick:= Form2.CliquedoBotaoClick;
3)Terceiro
Mesmo assim apareceu outros errinhos Bobos na hora de compilar.. Sugiro que voce cole como esta aqui;
[b]Form1[/b:20a639542f]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
end.[b:20a639542f]Form2[/b:20a639542f]
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm2 = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure CliquedoBotaoClick (Sender : TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses
Unit1,unit3;
{$R *.DFM}
procedure TForm2.CliquedoBotaoClick(Sender: TObject);
begin
ShowMessagePos(´Eu Amo as Mulheres´, -1, -1);
end;
procedure Carrega;
var botao: Tbutton;
begin
form3.show;
with TEdit.Create(Application) do
begin
Parent := Form3;
Left := strtoint(form1.Edit2.Text);
Top := strtoint(form1.Edit1.Text);
end;
Botao := Tbutton.Create(form3);
with Botao do
begin
OnClick := NIL;
Parent := Form3;
height := 32;
width := 128;
caption := ´Processar´;
left := (Form3.ClientWidth - width) div 2;
top := (Form3.ClientHeight - height) div 2;
onClick:= Form2.CliquedoBotaoClick;
end;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Carrega;
end;
end.[b:20a639542f]Form3[/b:20a639542f]
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm3 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses
Unit1,Unit2;
{$R *.DFM}
{ TForm3 }
procedure TForm3.FormShow(Sender: TObject);
begin
form2.WindowState := wsMinimized;
end;
end.
4) Quarto
[b:20a639542f]Mas mesmo assim o form3 so ira aparecer quando voce fechar o Form2[/b:20a639542f]...
Ai sim quando voce clicar no Botão ira aparecer a mensagem
Como eu disse anteriormente não da para entender a logica da interface do Form2
Gostei + 0
03/09/2005
Martins
Realmente tá um bocado sinistro esse negócio aê, copiei e colei aqui para testar e sinceramente não deu pra entender a funcionalidade não, sabe assim, se não for para aprendizagem mesmo, aonde ele vai usar.
Parabéns pela resolução!!!
Boa sorte a todos!!!
Gostei + 0
03/09/2005
Marco Salles
Sem falsa modestia , a idéia que eu tive de modificar a Instrução:
procedure Tform2.CliquedoBotaoClick (Sender:TObject); begin ShowMessagePos(´Consegui Porraaa´, -1, -1); end;
Por
procedure Tform2.CliquedoBotaoClick (Sender:TObject); begin ShowMessagePos(´Eu Amo as Mulheres´, -1, -1); end;
Foi de uma genialidade incrícel... Obrigado pelo reconhecimento :P
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)