Fórum Mais de um Form, e depois como chamar tal? #190530

24/10/2003

0

Iae pessoal, blz?
pra se abrir mais de uma vez um mesmo tipo de form por exemplo se faz o seguinte:
with tform2.create(self) do
begin
Show;
end;

bem. aí se pode abrir vários se for ativando esse cód. porem, agora como poder identificar tal form?
Seria no caso de um chat, no PVT com nova janela, para q sempre um nick q mandou a msg seja encaminhada a msg para essa janelinha/form especial. Então como nomear um form e depois ativar tal form entre outros tantos parecidos?


Valew


Lipsil

Lipsil

Responder

Posts

24/10/2003

Beppe

Se eu entendi bem, use a variável global definida na unit do form. Ex:

if Form2 = nil then Form2 := TForm2.Create(Application);
Form2.Show;


Ataliba


Responder

Gostei + 0

24/10/2003

Lipsil

Não, acho qnão é isso kra..

seria tipo como distinguir tal form2 atraves de por exemplo seu titulo q é diferente de todos os outros?


Responder

Gostei + 0

24/10/2003

Beppe

Tente criar uma stringlist para armazenar os captions destes forms e armazena o próprio como o object relacionado. Pra ativá-lo depois, procure-o na stringlist.

Ao criar um form:
Janelas.AddObject(NovoForm.Caption, NovoForm);

Pra ativar, dado um caption:
TForm(Janelas.Objects[Janelas.IndexOf(Nick)]).Show;


Ataliba


Responder

Gostei + 0

24/10/2003

Lipsil

Valew kra,
acho q é por aí mesmo!!!

Mas tipo esse form seria aberto ao se dar dois cliques numa lista de nicks, porém, se o form pra tal nick já estiver aberto, como faço pra q não seja aberto outro com tal nome?

E tb nesse cód q passou, em qual situação usa-lo para abrir um novo form, e tb em qual situação usa-lo para adicionar algo tipo no richedit1 q tiver nele?


Valew


Responder

Gostei + 0

24/10/2003

Claudio Quevedo

Uma solução que englobaria os dois problemas seria colocar o nick como caption:
with tform2.create([u:71576a7de4]Application[/u:71576a7de4]) do
begin
[u:71576a7de4]Caption := Nick[/u:71576a7de4]
Show;
end;

Crie um função que retorna o form de um determinado nick:
function NickToForm(ANick: string): TForm;
var
Indice: integer;
begin
result := nil;

for Indice := 0 to Application.ComponentCount - 1 do
if Application.Components[Indice] is TForm then
if TForm(Application.Components[Indice]).Caption = ANick then
begin
result := TForm(Application.Components[Indice]);
Break
end;
end;

Se o form do nick não existir a função retornará nil, se existir retornará o form...


Responder

Gostei + 0

24/10/2003

Lipsil

Ok, valew kra, é quase isso ainda!! :-P hehehe, ta dificil chegar nos finalmentes...

mas tipo assim, como mudar os dados de por exemplo um memo1 de um form chamado tpvt q existe entre outros varios tpvt, porém, este com o caption de TESTANDO, como fazer isso?


E tb, esse function anteriormente postado, como chamar ele para verificar se já existe ou não tal form com tal caption? E tb não permitir q seja aberto dois form tpvt q tenham o mesmo caption, e sim, ao clicar num nick q já tem um form aberto, q apenas seja sobreposto aquele form que na verdade já esta aberto, como?


Valew


Responder

Gostei + 0

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

Aceitar