deio 0 Denunciar post Postado Julho 24, 2007 olá a todos, dei uma trancada aqui na hora de criar uma condição no meu programa, a idéia é a seguinte, ao dar um dblclick no dbgrid no form1, ele crie componentes no form2, preenche os dados e da um form2.show, o q a condição deve fazer será, verificar se existe algum componente no form2, se existir ele só deve preencher os dados, se naum existir nenhum componente, faz todo o conjunto de comandos para criar os componentes e preencher os dados o comando q estou utilizando para verificar se existe algum componente é este : vari : Integer;begin for i := 0 to ComponentCount -1 do begin if Components[i] is "componente em questão" then begin (comandos) end; end;end; e o comando de criar componentes, a parte em negrito é a de preencher os dados : procedure TForm1.RecordView1Click(Sender: TObject);varn : integer;begin for n:=1 to datamodule6.dbf1.FieldCount do begin inc(n2, 24); with TDBEdit.Create(self) do begin parent := form2; name := 'dbedit'+ inttostr(n); <strong class='bbc'>datasource := datamodule6.datasource1; datafield := datamodule6.dbf1.FieldDefs.Items[n-1].Name;</strong> left := 125; top := 2 + n2; width := 297; end; with Tlabel.create (self) do begin parent := form2; <strong class='bbc'>caption:= datamodule6.dbf1.FieldDefs[n-1].Name;</strong> name := 'label'+inttostr(n+3); top := 4 + n2; left := 40; end; with form2 do begin width := 500; height:= height +24; form2.Show; end; end; if datamodule6.dbf1.FieldCount > 0 then begin with Tdbnavigator.Create(self) do begin parent := form2; <strong class='bbc'>datasource := datamodule6.datasource1;</strong> top := 35 + n2; name := 'dbnavigator1'; left := 125; end; end;form2.show;end; desde já agradeço a todos q ajudarem http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Julho 24, 2007 bom, você pode fazer da seguinte forma: Usando: function Assigned ( ObjectName : TObject ) : Boolean; Pequeno Exemplo: if Not Assigned(Edit1) then Begin Showmessage('Edit1 não existe'); //Aqui você coloca o código para criar o objeto pesquisado acima... end Else Begin Showmessage('Edit1 existe'); //aqui você não faz nada... só coloquei para você ver o funcionamento... end;[b] [/b] Beleza? Abraço!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
deio 0 Denunciar post Postado Julho 25, 2007 eu coloquei assim : procedure TForm1.RecordView1Click(Sender: TObject);varn,i : integer;begin begin for i := 0 to ComponentCount -1 do begin if Components[i] is TDbedit then begin if Not Assigned(TDbedit(components[i])) then Begin for n:=1 to datamodule6.dbf1.FieldCount do begin inc(n2, 24); with TDBEdit.Create(self) do begin parent := form2; name := 'dbedit'+ inttostr(n); datasource := datamodule6.datasource1; datafield := datamodule6.dbf1.FieldDefs.Items[n-1].Name; left := 125; top := 2 + n2; width := 297; end; with Tlabel.create (self) do begin parent := form2; caption:= datamodule6.dbf1.FieldDefs[n-1].Name; name := 'label'+inttostr(n+3); top := 4 + n2; left := 40; end; with form2 do begin width := 500; height:= height +24; form2.Show; end; end; if datamodule6.dbf1.FieldCount > 0 then begin with Tdbnavigator.Create(self) do begin parent := form2; datasource := datamodule6.datasource1; top := 35 + n2; name := 'dbnavigator1'; left := 125; end; end else begin TDbedit(components[i]).DataSource := datamodule6.DataSource1; TDbedit(components[i]).DataField := datamodule6.dbf1.FieldDefs.Items[n-1].Name; if components[i] is Tlabel then TLabel(components[i]).Caption := datamodule6.dbf1.FieldDefs[n-1].Name; end; end; end; end;form2.show;end; naum ta dando, aparece o form2 sem nenhum componente... Compartilhar este post Link para o post Compartilhar em outros sites
deio 0 Denunciar post Postado Julho 26, 2007 alguém sabe onde ta o erro? só ta aparecendo o form2 dois sem componentes... Compartilhar este post Link para o post Compartilhar em outros sites
deio 0 Denunciar post Postado Julho 30, 2007 :huh: alguém poderia me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Julho 30, 2007 kra ... mais pq você naum faz como eu te falei bixo?!!! naum precisa fazer esta verificacao toda naum .... basta q destrua o form qdo fechar o mesmo .... Veja, fiz um exemplo mto simples msm, só pra você ver como funciona, copie e cole em um projeto novo seu e veja como funciona ok! var Form: TForm; B: TButton;begin Form:= Tform.Create(Application); b:= TButton.Create(self); b.Parent:= form; b.Caption:= 'teste'; b.Name:= 'btnok'; form.ShowModal; FreeAndNil(form); Agora, me desculpe kra, respeitando sua ideia e tauz, mais naum vejo porque você fazer isto td. Porque você quer criar todos os componentes em runtime ??? POO existe pra facilitar a nossa vida, o lance de POO é encapsular o maximo as coisas, reaproveitar codigo e tauz ... saca???? Desculpa aew qualquer coisa kra ... é apenas uma opiniao ok!!! Forte abraço ... Compartilhar este post Link para o post Compartilhar em outros sites