Missão Impossível

Delphi

12/02/2003

Olá amigos,

Preciso pegar o nome dos forms de minha aplicação, os quais ainda não foram criados, pois eu os crio somente qdo vou utiliza-los. Se tivesse alguma forma de pegar os forms depois de compilar (pois os forms ficam no dpr), poderia seguir meu projeto. Alguém tem alguma idéia??

Grato,

Renato


Renatotm

Renatotm

Curtidas 0

Respostas

Anonymous

Anonymous

12/02/2003

Bom, naum sei se te entendi direito, mas já que você só chama os formulários na hora de utilizá-los, naum precisa pegar uma lista dos que ainda naum foram criados em tempo de execução. Basta fazer as referências no próprio tempo projeto


GOSTEI 0
Anonymous

Anonymous

12/02/2003

Renato,
sua dúvida não está muito clara, mas se entendi corretamente, você desabilitou a criação automática dos forms.
Isto significa que você apenas tem as classes dos Forms criados.
Como os objetos não são instanciados automaticamente você não tem como procurá-los (eles ainda não existem).
Suas opções:
- descobrir as classes de forms disponíveis na aplicação;
- identificar as variáveis declaradas dos forms;
Em ambos os casos os resultados não dizem muito e são extremamente complexos de se obter (se é que você pode obtê-los apenas com o executável).
Podem existir alternativas melhores para resolver o seu problema, mas é necessário saber QUAL É o seu problema real.
RF


GOSTEI 0
Jonny_x

Jonny_x

12/02/2003

Se form para criar form dinamicamente é assim..
Não entendi direito a sua dúvida


mas ai vai

form2:=form2.create(Application); / / vc só cria na hora que vai usar
form2.show; // ajuda a inicializar mais rápido


GOSTEI 0
Wanderley.f

Wanderley.f

12/02/2003

[quote=´renatotm´]Olá amigos,

Preciso pegar o nome dos forms de minha aplicação, os quais ainda não foram criados, pois eu os crio somente qdo vou utiliza-los. Se tivesse alguma forma de pegar os forms depois de compilar (pois os forms ficam no dpr), poderia seguir meu projeto. Alguém tem alguma idéia??

Grato,

Renato



caro Renato tente isso

If nome_do_form = nil then
nome_do_form := Tnome_do_form.Create(Application);
nome_do_form.Show;

isso fará com que somente uma isntância do form seja criada, e caso ela já exista somente reexibida, mas para isso você deverá definir quais forms deverão ser criados na inicialização e quais deverão ser criados e destruidos em tempo de execuação
espero que tenha ajudado


GOSTEI 0
Flavio Sanches

Flavio Sanches

12/02/2003

Pelo que eu percebi, ninguem respondeu o que vc queria saber.
E pra variar, nem eu vou responder, a menos que vc explique o que vc quer afinal, praque vc precisa saber o nome dos forms antes de cria-los.
Acrescento que vc não precisa saber qual é o nome do form pra cria-lo
vc pode usar uma procedure padrao pra criar qq form, esperar que ele seja fechado depois destruí-lo e vc, no código, so precisa passar:

abreform(form_tal);

De qq forma, a unica forma de vc conseguir fazer isso é na cri~ção da aplicação vc criar todos os forms e gravar o nome deles num array global e depois destruílos e só reconstruílos na hora de usar. mas isso é uma solução meio ´Manuel da Padaria´

espero ter contribuido


GOSTEI 0
Anonymous

Anonymous

12/02/2003

O problema é o seguinte:

Desenvolvi um controle de acesso, no qual eu listo os forms para poder pegar todos seus componentes e armazena-los em um banco de dados, para tanto dou um application.findcomponent procurando a classe dos forms. O problema é que isso funciona somente com os forms criados.
Se eu pudesse pegar o nome dos forms, eu criaria eles em tempo de execucao, pegaria seus componentes e depois fecharia os mesmos.


GOSTEI 0
Flavio Sanches

Flavio Sanches

12/02/2003

maneiro
viajei com jota mesmo
a galera aqui do serviço se amarrou na tua ideia
e a resposta pro teu problema é
falta de casamento
c so pode ser solteiro, cara


GOSTEI 0
Anonymous

Anonymous

12/02/2003

Pô, por que vc não gostou da minha idéia?

Abre o .DPR na marra, na execução do programa, como se fosse um texto normal, e faz um algoritmo que encontra os nomes dos Forms...

var Projeto: TextFile;
begin
AssignFile(Projeto, ´c:\MeuProjeto.DPR´)
Reset(Projeto);
while not Eof(Projeto) do
begin
Readln(............... e por aí vai....
end;
end;

Agora, se vc quer que eu faço o algoritmo, é demais!!!


GOSTEI 0
POSTAR