Ver Mensaje Individual
  #1  
Antiguo 08-10-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Reputación: 18
Ade Va por buen camino
Destruir Qrlabels creados en tiempo de ejecucion

Mi problema es q creo los label en tiempo de ejecucion, algo asi:
Código Delphi [-]
for i := 1 to NumCampos  do begin
      With TQRLabel.Create( Self ) do
      begin
          campo:=ObtienePalabra(QRLabelnew.caption, ',', i);
          longitud:= length(campo);
          Name       := 'QRLabel' + IntToStr(i);//'txPorc' + IntToStr(aListas[i]);
          AutoSize   := true;
          Font.Name  := 'Courier New';
          Font.Style := [fsBold];
          Height     := 17;
          Left       := nCol;
          Top        := 32;
          Width      := longitud;
          Caption    := campo;
          Parent     := ColumnHeaderBand1;
          nCol:= nCol+(longitud*7);
      end;
y cuando cierro el informe y vuelvo a realizar otro claro pues se duplica label1,label2, segun el nº d campos, y ahi me da error, me dice:
Cita:
A component named Qrlabel1 already exists
como puedo una vez cerrado el informe eliminar los qrlabel creados en tiempo de ejecucion??
he probado en el onclose del fom q alberga el quicrep, hay alguna manera de saber cuando se cerró?
Tambien he probado, en el boton donde llamo a QuickRep2.Preview, tras esto hacer:

Código Delphi [-]
     InformeProveedores2.QuickRep2.Preview;
     total:=InformeProveedores2.ComponentCount;
     totalbucle:= total-1;
          for i:=0 to  totalbucle do
         begin
             if InformeProveedores2.Components[i] is TQRLabel then
                begin
                showmessage(InformeProveedores2.Components[i].name);
               {TQRLabel(InformeProveedores2.Components[i]).Destroy; aqui es cuando falla, hay solo un Tqrlabel funciona, lo destruye, pero si hay mas me da error}
                end;
         end;
end;

el error:
raised exception class EListError whit message 'list index of boun(7)'
deciros q el 7 creo q es el valor de i en ese momento, es decir el elemento q deberia destruirse ( sino e suna coincidencia )

Saludos y espero me puedan ayudar



Saludos
Responder Con Cita