zeroskull 0 Denunciar post Postado Agosto 1, 2006 Boa noite pessoal,estou fazendo um projeto e preciso que um mesmo form seja criado varias vezes por exemplo:procedure TForm1.Button1Click(Sender: TObject);beginApplication.CreateForm(TForm2, Form2)Form2.Show;end;e depois no formcloseprocedure TForm2.FormClose (Sender: Tobject; var Action : TCloseAction);beginAction:= caFree;end;Até aqui tudo bem, ele cria o formulario dinamicamente, e se eu clicar varias vezes no Botão(Button1) ele vai abrir varias janelas. Mas o meu problema é que eu gostaria de ter um controle das janelas abertas, por exemplo, mudar o nome do caption da janela e ter a possibilidade de colocar os "titulos" num menu tambem criado dinamicamente. Na pratica colocar um nome em cada form e poder dar um show ou um hide na qual eu quiser. Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Agosto 1, 2006 você pode criar um vetor de forms ou apenas ter um controle melhor somre o nome dos forms tendo, por exemplo, uma variável para registrar o número de forms que você tem exemplo: var i:integer;begin Application.CreateForm(TForm2, Form+inttostr(i)); inc(i); ....end; mas isso vai depender do que você realemnte pretende fazer com os forms. Se precisar destruí-los, use outra variável para controle... Eu precisava de um pagecontrol que criasse richs dinâmicos, perguntei na Unidev e recebi o segunte código: procedure Tform1.CriaNovaAba(Dono: TPageControl);var newtab: TTabSheet; rich: trichedit;begin inc(abas); newtab:= TTabSheet.Create(Dono); rich:=trichedit.Create(Dono); newtab.PageControl:=Dono; newtab.tag:=abas; with rich do begin Name:='TXT'+inttostr(abas); Parent:=newtab; Align:=alClient; WantTabs:=true; ScrollBars:=ssBoth; text:=''; PopupMenu:=PopupMenu2; Font.Name:='Courier New'; font.size:=10; PlainText:=true; Onkeypress:=RichEdit1Change; onkeyup:=RichEdit1KeyUp; WordWrap:=false;// BorderStyle:=bsNone; end; Dono.ActivePage:=newtab; newtab.ImageIndex:=0; newtab.Caption:='Sem Titulo '+inttostr(abas); dono.ActivePage.PopupMenu:=PopupMenu1; ToolBar1.Buttons[17].Down:=rich.WordWrap; if PageControl1.PageCount > 1 then begin Proximaaba1.Enabled:=true; AbaAnterior1.Enabled:=true; end else begin Proximaaba1.Enabled:=false; AbaAnterior1.Enabled:=false; end; TRichEdit(PageControl1.ActivePage.FindChildControl('TXT'+inttostr(PageControl1.ActivePage.tag))).SetFocus;end; Fiz algumas alterações para a minha real necessidade e o resultado compilado está nesse Link PS.: o Programa não está pronto... Compartilhar este post Link para o post Compartilhar em outros sites
zeroskull 0 Denunciar post Postado Agosto 1, 2006 Bom dia Concegui achar a solução, então vou postar aqui para quem tiver duvidas... Criei dois forms( Form1, Form2) No primeiro form coloquei um dois botões um para criar o form2, outro para listar os nomes deles e um listbox. Declare NumForms como inteiro e privado. no primeiro botao(o de criar o form) no evento onclick coloquei o seguinte codigo: with TForm2.Create(Self) do begin Inc(NumForms); // Incrementa a variavel Caption := 'Form '+ IntToStr(NumForms); //Define o nome do titulo do form Show; //mostra o form end; no segundo botao(de listar os nomes dos forms): var i : Integer; begin for i := 0 to Screen.FormCount-1 do Listbox1.Items.Add(Screen.Forms.Caption); // Lista o nome no listbox o nome do titulo dos forms end; no evento DblClick do listbox: screen.Forms[listbox1.ItemIndex].Show; //Apresenta a janela com o indice do listbox Então é isso ae. Compartilhar este post Link para o post Compartilhar em outros sites