Problema ao criar Campos em Tempo de execução
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:
Grato a todos...
Castilhos
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
Curtidas 0
Melhor post
Claudio Ferreira
16/12/2014
Tire a linha que atribui o nome que vai funcionar :
// lblPasso.Name:= 'lblPasso'+IntToStr(N);
// lblPasso.Name:= 'lblPasso'+IntToStr(N);
GOSTEI 1
Mais Respostas
Abel Santos
16/12/2014
Na mosca cara.
Muito obrigado pela ajuda,já estava à tres dias empacado fiz de tudo nas não pensei nisso.Que vergonha.
Obrigado novamente.
Muito obrigado pela ajuda,já estava à tres dias empacado fiz de tudo nas não pensei nisso.Que vergonha.
Obrigado novamente.
GOSTEI 0
Claudio Ferreira
16/12/2014
por nada
GOSTEI 1