Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2006
Raze Raze is offline
Registrado
 
Registrado: feb 2005
Posts: 9
Poder: 0
Raze Va por buen camino
Liberar array bidimensional de botones

Saludos a todos

Estoy desarrollando un programa de una bodega, en el cual hay un botellero implementado con un array de botones

Quiero construir los botelleros dinamicamente a partir de su numero de filas y columnas, que leeré de los campos correspondientes de una base de datos (para las pruebas los paso a traves de unos tedit: txtfila y txtcolumna)

Código:
procedure Tfrmvino.Button1Click(Sender: TObject);
var
        fila, columna: integer;  //numero de filas y columnas del botellero
        i, j: integer;
        posx, posy: integer;   //posicion del boton en pantalla
begin
        fila := strtoint(txtfila.Text);
        columna := strtoint(txtcolumna.Text);
        posx := 500;
        posy := 90;

        for i:= 0 to 9 do                         //limpiamos la matriz de botones
           for j:= 0 to 9 do
                botellero[i,j].free;


        for i:= 0 to fila - 1 do
        begin
           for j:= 0 to columna - 1 do
               begin
                     botellero[i,j]:= TButton.Create(self);
                     botellero[i,j].Parent := frmvino;
                     botellero[i,j].Top := posy;
                     botellero[i,j].Left := posx;
                     botellero[i,j].Name := 'botella_' + inttostr(i) + '_' + inttostr(j);
                     botellero[i,j].Tag := strtoint( inttostr(i) + inttostr(j));
                     botellero[i,j].Width := 30;
                     botellero[i,j].Height := 30;
                     posx := posx + 29;
                end;
            posx := 500;
            posy := posy + 29;
        end;

end;
el problema surge al limpiar el array bidimensional de botones. Ocurre lo siguiente:

- La primera matriz la dibuja correctamente (p.e, 2 filas y 4 columnas)
- Al dibujar la segunda matriz, borra correctamente la primera y dibuja la segunda. (p.e 2 filas, 2 columnas)
- Si hemos disminuido el numero de columnas en la segunda matriz respecto al anterior, si lo volvemos a incrementar para dibujar una tercera ( 2 filas, 4 columnas otra vez) salta una excepcion del tipo "access violation at address ...) en el bucle para limpiar el array justo cuando empieza a limpiar la segunda fila ( i = 1).

¿que es lo que estoy haciendo mal?
Utilizo Delphi 6 sobre Windows XP professional SP 1.
Muchas gracias por vuestra atencion

Última edición por Raze fecha: 17-05-2006 a las 09:35:32.
Responder Con Cita
  #2  
Antiguo 16-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Prueba utilizando FreeAndNil en vez de Free.
Código Delphi [-]
for i:= 0 to 9 do   
  for j:= 0 to 9 do
    FreeAndNil(Botellero[i,j]);
Responder Con Cita
  #3  
Antiguo 16-05-2006
Raze Raze is offline
Registrado
 
Registrado: feb 2005
Posts: 9
Poder: 0
Raze Va por buen camino
Funciona perfectamente.
Muchísimas 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
pasar como parámetro un array bidimensional nsr048 Varios 2 08-11-2005 11:54:20
array de botones Maga84 Varios 2 25-03-2005 16:24:30
Llenar un arreglo bidimensional ... Luli Varios 8 23-03-2005 12:22:06
arreglo bidimensional Luli Varios 7 22-01-2005 13:09:44
Como Asignar Variable Tipo Array de Tform a otro Array del Mismo tipo morfeo21 Varios 5 17-08-2004 17:39:51


La franja horaria es GMT +2. Ahora son las 04:35:26.


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