Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

deio

na criação da condição...

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.