Newsgroup: it.comp.lang.delphi
Titolo: come sapere se un oggetto esiste gia.

 Siccome ho un insieme di oggetti creati dinamicamente, e che vengono 
creati tramite un ciclo for, ad ogni reinizializzazione della form, 
dovrei vedere se questi oggetti esistono gia. In particolare questi 
oggetti sono bottoni e label.
Come si puņ  vedere se un oggetto di un certo nome e di un certo tipo 
esiste gia?
Grazie
--- posted by geoForum on 
http://www.delphiedintorni.it

 esiste gia?
if findcomponent('nomechehaidatoalloggetto')=nil then <non esiste> else
<esiste>

 ha scritto nel messaggio
news:c2i12q$1s4q0a$1...@ID-43509.news.uni-berlin.de...

E pensare che con findcomponent ci avevo quasi preso.
Grazie 1000

"<-Tangle->" <j...@jlo.jlo> ha scritto nel messaggio
news:XK%2c.15086$z23.6...@news3.tin.it...

io ho provato con questa procedura, ma mi da stack overflow
Procedure TForm4.Start();
var Toto_Sequenze,I :integer;
    File_Dott:String;
      Variabile_Seq,Sequenza_Presa: String;
      Btn,Btn2:TButton;
      Lbl,Lblnum:TLabel;
begin
  if (Profilo.Profilo_Attuale <>'0') then
    begin  //Leggi tutte le sequenze e riportale sulla form
      Label11.Caption:='Elenco Sequenze Utente '+Profilo.Nome_Attuale;
      File_Dott:=
ExtractFilePath(Application.ExeName)+'configurazione\dottori\'+'dottore_'+Pr
ofilo.Profilo_Attuale+'.dat';
Toto_Sequenze:=StrToInt(Profilo.Leggi_Proprieta(File_Dott,'sequenze','totale
'));
      For I:=1 to  Toto_Sequenze do
      begin
          Variabile_Seq:='seq_'+IntToStr(I);
Sequenza_Presa:=Profilo.Leggi_proprieta(File_Dott,'sequenze',Variabile_Seq);
          if((FindComponent(Sequenza_Presa+'_'+IntToStr(I)) as TLabel)=nil)
            then
             begin
                Lbl:=TLabel.Create(Application);
                Lbl.Name:=Sequenza_Presa+'_'+IntToStr(I);
                Lbl.Top:=Btn.Top;
                Lbl.Left:=LblNum.Left+LblNum.Width+100;
                Lbl.Parent:=Self;
                Lbl.Caption :=Sequenza_Presa;
                Lbl.Visible:=true;
             end;
            if((FindComponent('Lbl_num_'+IntToStr(I)) as TLabel)=nil)
             then
               begin
                 LblNum:= TLabel.Create(Application);
                 LblNum.Name:='Lbl_num_'+IntToStr(I);
                 LblNum.Top:=Btn.Top;
                 LblNum.Left:=40;
                 LblNum.Parent:=Self;
                 LblNum.Caption :='Sequenza '+IntToStr(I);;
                 LblNum.Visible:=true;
            end;
            if((FindComponent('Modifica_'+IntToStr(I)) as TLabel)=nil)
              then
               begin
                 Btn:= TButton.Create(Application);
                 Btn.Name:='Modifica_'+IntToStr(I);;
                 Btn.OnClick  := BtnModificaOnClick;
                 Btn.Top:= 50*I;
                 Btn.Left:=Lbl.Left+200;;
                 Btn.Parent:=Self;
                 Btn.Caption :='Modifica';
                 Btn.Visible:=true;
              end;
            if((FindComponent('Cancella_'+IntToStr(I)) as TLabel)=nil)
              then
                begin
                  Btn2:= TButton.Create(Application);
                  Btn2.Name:='Cancella_'+IntToStr(I);
                  Btn2.OnClick := BtnCancellaOnClick;
                  Btn2.Top:=Btn.Top;
                  Btn2.Left:=Btn.Left+Btn.Width+10;
                  Btn2.Parent:=Self;
                  Btn2.Caption :='Cancella';
                  Btn2.Visible:=true;
                end;
     end;
   end
  else  MessageDlg('Attenzione, deve essere prima scelto un
profilo',mtError,[mbOk],0) ;
end;

> io ho provato con questa procedura, ma mi da stack overflow
EStackOverflow is the exception class for stack overflows.
Description
EStackOverflow is raised when the system is unable to allocate necessary
stack space. This can happen because of extremely large local variables,
deeply recursive routines, or invalid machine-language code.
Run-time exception information is saved in fields provided by EExternal.
che cos' è Profilo ?
non e che da Leggi_proprieta di profilo richiami Start;
un consiglio :
               Lbl.Top:=Btn.Top;
e se Btn non è creato ... ???
Access Violation ..

"Luca Zanni" <Punga@Libero.g> ha scritto nel messaggio
news:%_03c.58715$FJ6.2...@twister1.libero.it...

No, da leggi profilo non richiamo start. Inoltre profilo è un oggetto
esterno.
Grazie