Pq dá erro quando passo uma variável para criar um form??
Colegas..
É 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..
É 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
Curtidas 0
Respostas
Rodolpho123
14/02/2005
Tente:
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
Cabelo
14/02/2005
Colega..
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..?
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
Rodolpho123
14/02/2005
Tente antes de criar o seu Form pela variável, passar [b:8f199885ea]nil[/b:8f199885ea], pois eu já tive um problema parecido com o seu. Quando eu atribuía minha variável, assim:
ela já vinha instanciada, como vc disse, um ´espelho´ da classe de herança. E o que resolveu foi fazer isto:
Acho que isto pode resolver o seu problema...
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
Beppe
14/02/2005
Sem colocar a unit no uses é impossível fazer algo com o form diretamente, mas dá pra fazer algo com Screen.Forms, ou se vc usar um variável global.
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
Cabelo
14/02/2005
Eu utilizo uma variável global e mesmo assim não consegui, e com o screen forms ficou extremamente lenta a plicação, já que passo quaso todos os parâmetros em RUN TIME, o que eu acho estranho, é pq criar um form parecido se eu passo um form existente para a variável..
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?
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
Beppe
14/02/2005
Cabelo, verifique este thread: http://forum.clubedelphi.net/viewtopic.php?t=58133
Isto sanará seu problema de ineficiência.
T+
Isto sanará seu problema de ineficiência.
T+
GOSTEI 0