Missão Impossível

12/02/2003

0

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

Responder

Posts

12/02/2003

Anonymous

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


Responder

13/02/2003

Anonymous

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


Responder

13/02/2003

Jonny_x

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


Responder

13/02/2003

Wanderley.f

[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


Responder

13/02/2003

Flavio Sanches

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


Responder

13/02/2003

Anonymous

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.


Responder

13/02/2003

Flavio Sanches

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


Responder

13/02/2003

Anonymous

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!!!


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar