Fórum Problema ao criar Campos em Tempo de execução #504468

16/12/2014

0

Salve amigos.

Primeira vez que uso o forum e desde já agradeço a todos.

Meu problema:

Tenho um projeto no qual adiciono alguns campos em tempo de execução.
Antes de aplicar no projeto fiz testes usando um nome para o label e funcionou, só que no projeto eu verifico os campos label existentes daí sei o quantos labels tenho, podendo então criar os campos a partir dessa informaçao.
O problema surgiu quando ao criar o componente ele mostra erro dizendo já haver um label com o nesmo nome, posso dar o nome que quiser que não vai.
Não sei se é um bug do delphi ou um erro no código que não consigo encontrar.

Enfim, uso o delphi 2010.

Segue o codigo para análise:

 procedure TformTerminal. btnInserirPassosClick(Sender: TObject);
 var lblPasso,lblDescricao, lblCodigo,lblTraco:TLabel; mmDescricao:TMemo; edtCodigo:TEdit;
 I,U,N,qt,upassoTop,npassoTop, leftDescricao,topDescricao:integer;
 NomeDescricao,nultimoPasso, nlblPasso,clblPasso,nlblDescricao,nlblCodigo, nlblTraco,nmmDescricao,neditCodigo:string;

begin 
qt:=0;
 for I:= 0 to formTerminal.ComponentCount -1 do 
begin 
if formTerminal.Components[I] is TLabel then
 qt:=(qt +1); 
U:=qt div 4; 
begin 
if formTerminal.ComponentCount >1 then 
begin 
N:= (U + 1) ;
 nultimoPasso:=('lblPasso'+ IntToStr(U));
 nlblPasso:= ('lblPasso')+ IntToStr(N); 
clblPasso:='Passo ' + IntToStr(N) + ':'; 
nlblDescricao:=('lblDescricao') + IntToStr(N); 
nlblCodigo:=('lblCodigo') + IntToStr(N); 
nlblTraco:=('lblTraco') + IntToStr(N); 
nmmDescricao:=('memoDescricao') + IntToStr(N); 
neditCodigo:=('editCodigo') + IntToStr(N);

if (FindComponent(nultimoPasso)<> nil) then begin lblPasso:=TLabel.Create(self); 
lblPasso.Parent:=sbPassos; 
lblPasso.Width:=50; 
lblPasso.Height:=16; 
lblPasso.Left:=231;
 lblPasso.Font.Style:=[fsBold]; 
lblPasso.Top:=446;
 lblPasso.Caption:='Passo 0'+ IntToStr(N)+':'; 
lblPasso.Name:= 'lblPasso'+IntToStr(N);
 lblPasso.Visible:=true end;
 end; 
end; 
end; 
end; 


Grato a todos...

Castilhos
Abel Santos

Abel Santos

Responder

Post mais votado

16/12/2014

Tire a linha que atribui o nome que vai funcionar :

// lblPasso.Name:= 'lblPasso'+IntToStr(N);

Claudio Ferreira

Claudio Ferreira
Responder

Gostei + 1

Mais Posts

16/12/2014

Abel Santos

Na mosca cara.

Muito obrigado pela ajuda,já estava à tres dias empacado fiz de tudo nas não pensei nisso.Que vergonha.

Obrigado novamente.
Responder

Gostei + 0

17/12/2014

Claudio Ferreira

por nada
Responder

Gostei + 1

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

Aceitar