Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Question Liberar los componentes de un srollbox

Buenas a tod@s!! Vereis tengo un treeview en el que tengo 4 items,son los nombres de 4 tablas que tengo en paradox.
Cuando le doy a la 1º tabla quiero cree Tchecks en tiempo de ejecucion para cada campo de la tabla, hasta ahi todo bien, tengo otro procedimiento que libera de memoria todos los checks de el srollbox para que cuando le de a otro item(nombre de otra tabla) libere de memoria el srollbox y pueda crear los nuevos Tchecks de esta tabla elegida, entonces cuando ejecuto y le doy a una tabla(la 2º que elija) me genera un errror : 'Acces violation at address 0041E23E in module PVideo.exe' . Hago un try except para controlar este error y quito de tools/debugger Options/language Exception/Stop on delphi Exception. y el error ya no da. Pero no me libera todos los componentes bien y al crear nuevos tampoco lo hace bien. Pongo el codigo a ver si alguien sabe que estoy haciendo mal.

Código Delphi [-]
  //CbbCampos.Items.Clear;
  //procedimiento que libera de memoria los componentes del srollbox
  LiberarChecks();
  if Node.Text = 'Socios' then
    begin
      MostrarTabla('Socios');//Nada que ver para lo que quiero
      CargarCampos(DM.TblSocios);//Carga los checks en el srollbox
    end
  else
    if Node.Text = 'Peliculas' then
      begin
        MostrarTabla('Peliculas');
        CargarCampos(DM.TblPelis);
      end
    else
      if Node.Text = 'Provincias' then
        begin
          MostrarTabla('Provincia');
          CargarCampos(DM.TblProvin);
        end
      else
        if Node.Text = 'Alquileres' then
        begin
          MostrarTabla('Alquileres');
          CargarCampos(DM.TblAlquileres);
        end;
end;
 
procedure TFrmConsultas.CrearCheckBox(p : integer; Campo : String );
begin
  ChckBxCampo := TCheckBox.Create(self);
  ChckBxCampo.Parent := SrBxCampos;//srollbox
  ChckBxCampo.Top := p; 
  //RdBtnCampo.Name := 'RdBtn'+Campo;
  ChckBxCampo.Width := 120;
  ChckBxCampo.Left := 15;
  ChckBxCampo.Caption :=Campo;
end;
 
procedure TFrmConsultas.LiberarChecks();
var
  i : integer;
  //check : TControl;
begin
  try
    try
      for i := 0 to SrBxCampos.ControlCount do
          SrBxCampos.Controls[i].Free;
    except
      //No quiero que haga nada.
    end;
  finally
  end;
end;

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 27-05-2006
Northern Northern is offline
Miembro
 
Registrado: ene 2006
Posts: 211
Poder: 19
Northern Va por buen camino
Aquí for i := 0 to SrBxCampos.ControlCount do al menos le falta un -1 debería ser SrBxCampos.ControlCount-1 ...
Responder Con Cita
  #3  
Antiguo 27-05-2006
Avatar de lpmlpm
lpmlpm lpmlpm is offline
Miembro
 
Registrado: ago 2005
Posts: 136
Poder: 19
lpmlpm Va por buen camino
Cuando estas eliminando objetos, procura usar el for de manera invertida sino te arriesgas a tener esos errores de acceso a memoria... seguro que con esto se arregla tu procedimiento:

Código Delphi [-]
 
for i := Pred(SrBxCampos.ControlCount) downto 0 do
 SrBxCampos.Controls[i].Free;
__________________
"Lo mejor de no saber hacer nada es que se tiene mucho tiempo libre."
Responder Con Cita
  #4  
Antiguo 29-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Buenas!! Gracias por contestar, no tenia ni idea de que asi fuera mejor .
Pero al final e optado por poner un checklistbox que es mucho mas comodo.
Muchas Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Liberar estructura Coco_jac Varios 5 12-12-2005 21:42:11
TSHFileInfo, se ha de liberar? [Gunman] API de Windows 4 28-11-2005 21:14:36
liberar objetos OscarG OOP 13 06-10-2005 18:49:18
Liberar componentes de la memoria ingel Varios 11 29-06-2005 18:30:09
Liberar un vector... Tanix PHP 6 28-08-2003 09:36:36


La franja horaria es GMT +2. Ahora son las 03:25:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi