Fórum Pq dá erro quando passo uma variável para criar um form?? #268507
14/02/2005
0
É o seguinte, tenho um form, na qual eu utilizo em várioas módulos separadamente, então ele deve ser independente..
Para isso preciso dar um CreateForm em um dos forms, mas passá-lo como uma variável TForm, mas quando tento usá-lo em outros forms dá erro de violação de acesso FFFF, quando debuguei percebi que o form leva um valor null..
como faço para utilizar essa variável, sem ter que passar o próprio form..?
Agradeço antecipadamente..
Cabelo
Curtir tópico
+ 0Posts
14/02/2005
Rodolpho123
var fForm : TSuaClasseDeForm; // Desde que a uses esteje declarada neste form onde vc chama o outro... begin if fForm = nil then Application.CreateForm(TSuaClasseDeForm,fForm); // Depois, vc destrói o Form onde vc quiser, usando FreeAndNil(fForm); end;
Gostei + 0
15/02/2005
Cabelo
Isso eu já faço, exatamente como vc sugeriu.. o problema está no seguinte..
Em um determinado momento eu chamo um form de busca.. frmBusca, neste form eu tenho a variável s_form.. dentro de um do form selecionar cliente eu preciso chamar o frmbusca, e passar para a variável o form cadastro de clientes, frmCadCli.. até aí belesa uso o createform como vc sugeriu e ele cra, o problema está quando eu preciso usar o form por exemplo frmCadCli.caption := ´Teste´, aí dá erro de violação de acesso, debuguei, e o que ele criou foi um ´espelho´ do form que passei pra variável, com o nome frmCadCli_1, isto é não criou o form como deveria ser..
Preciso criar este mesmo form, mas sem usá-lo na seção USES do frmBusca..
Tem outra sugestão..?
Gostei + 0
15/02/2005
Rodolpho123
var fForm : TMinhaClasse;
ela já vinha instanciada, como vc disse, um ´espelho´ da classe de herança. E o que resolveu foi fazer isto:
begin fForm := nil; Application.... end;
Acho que isto pode resolver o seu problema...
Gostei + 0
15/02/2005
Beppe
for I := 0 to Screen.FormCount - 1 do if Screen.Forms[I].ClassName = ´TfrmCadCli´ then begin Screen.Forms[I].Caption := ´Teste´; Break; end;
Gostei + 0
15/02/2005
Cabelo
Não posso tratar na seção uses, já que uso este form em vários módulos, sendo que ele é compartilhado a todos..
Tem alguma outra sugestão?
Gostei + 0
15/02/2005
Beppe
Isto sanará seu problema de ineficiência.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)