Missão Impossível
12/02/2003
0
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
Posts
12/02/2003
Anonymous
13/02/2003
Anonymous
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
13/02/2003
Jonny_x
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
13/02/2003
Wanderley.f
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
13/02/2003
Flavio Sanches
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
13/02/2003
Anonymous
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.
13/02/2003
Flavio Sanches
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
13/02/2003
Anonymous
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!!!