Declaração de campos dentro de uma classe
03/06/2008
0
Tenho 2 forms: Form1 e Form2. No Form1 eu declaro minhas classes e no Form2 eu Instancio-as. Eu queria declarar um método que fosse lido dois parâmetros de dois Edits. Então no Form2 quando eu colocar os 2 Edits no form para escrever meus códigos, eu não precisasse fazer assim:
Mas quando chamar minha classe assim:
var
meu := TMinhaClasse.Create;
meu.soma(val1,val2);
Onde val1 e val2 são lidos de um Edit, mas gostaria que essa informação já fosse implementada na declaração da classe e quando eu chamasse, bastasse eu digitar 2 valores nos edits correspondentes e funcionar. Como faço isso?
var
val1,val2: Integer;
begin
val1 := StrToint(Edit1.Text);
....
Mas quando chamar minha classe assim:
var
meu := TMinhaClasse.Create;
meu.soma(val1,val2);
Onde val1 e val2 são lidos de um Edit, mas gostaria que essa informação já fosse implementada na declaração da classe e quando eu chamasse, bastasse eu digitar 2 valores nos edits correspondentes e funcionar. Como faço isso?
Paulo
Curtir tópico
+ 0
Responder
Posts
04/06/2008
Brunodsr
Bom, pelo que eu entendi, vc quer que a sua classe já saiba de quem deve ler automáticamente, sem que vc tenha que passar o valor do componente.
Se for isso. Vc pode definir nomes de componente padrões para serem usados pela classe e utilizar a função findcomponent. Isso pra o caso de vc ter mais de um edit em tela e ferrar tudo. Vou fazer um exemplo aí procê:
Declaração da classe:
Implementação dos procedimentos da classe:
Agora o form que tem o meu componente usando a minha classe;
Para ficar mais legal, vc pode ao invés de engessar o nome dos componentes, escrever em arquivos INI o nome dos componentes que vc quer atribuir o valor. Daí fica dinâmico.
Espero ter ajudado.
Se for isso. Vc pode definir nomes de componente padrões para serem usados pela classe e utilizar a função findcomponent. Isso pra o caso de vc ter mais de um edit em tela e ferrar tudo. Vou fazer um exemplo aí procê:
Declaração da classe:
teste = class bruno:string; constructor create(sender:TComponent); procedure AtribuiValores(sender:TForm); end;
Implementação dos procedimentos da classe:
//No construtor da classe eu passo o formulário que tá instanciando ela constructor teste.create(sender:TComponent); begin AtribuiValores(TForm(sender)); end; procedure teste.AtribuiValores(sender:TForm); begin //Sabendo quem é o formulário, eu procuro o meu componente lá //e atribuo o valor da minha variável ao valor do componente if Assign(sender.FindComponent(´bruno´)) then bruno := TEdit(sender.FindComponent(´bruno´)).Text; end;
Agora o form que tem o meu componente usando a minha classe;
//Nesse caso eu tenho um edit na tela chamado ´bruno´.. procedure TForm1.Button1Click(Sender: TObject); var t:teste; begin t:= teste.create(self); showmessage(t.bruno); end;
Para ficar mais legal, vc pode ao invés de engessar o nome dos componentes, escrever em arquivos INI o nome dos componentes que vc quer atribuir o valor. Daí fica dinâmico.
Espero ter ajudado.
Responder
Clique aqui para fazer login e interagir na Comunidade :)