Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 21
zvf Va por buen camino
El procedimiento para destruirlo es :
Código Delphi [-]
procedure TFPrincipal.DestruirBotones;
  var i, botonesCreados:integer;
begin
  botonesCreados:=FPrincipal.GroupBoxProd1.ControlCount;
 for i:=botonesCreados-1 downto 0 do
       begin
       FPrincipal.GroupBoxProd1.Controls[i].Free;
       end;
 inicializa;
end;
Responder Con Cita
  #2  
Antiguo 11-04-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 21
zvf Va por buen camino
El procedimiento siguiente, se manda llamar al dar click en un tlabel:

Código Delphi [-]
procedure TFPrincipal.mostrar_productos(sender : TObject);
var consulta,seleccionado : string;
    avanza,pos : integer;
begin
   pos:= -1;
   seleccionado:=(Sender as TLabel).Caption;
   // busca el seleccionado en el arr_descripciones, ya que lo encuentra ve el cod. en arr_codigos
   avanza :=0;
   while avanza < pos_descripciones do
    begin
     if arr_descripciones[avanza] = seleccionado then
       begin
         pos := avanza;
         avanza := pos_descripciones;
       end;
     avanza := avanza+1;
    end;
    nivel := nivel+1;
    padre := strtoint(arr_codigos[pos]);
    mostrar_productos1;
end;
Responder Con Cita
  #3  
Antiguo 11-04-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 21
zvf Va por buen camino
El procedimiento mostrar_productos1 es el que destruye los label existentes y crea nuevos con las categorias, ya dandole un nivel y un padre:

Código Delphi [-]
procedure TFPrincipal.mostrar_productos1;
var  avanza: integer;
     snivel,spadre,sclasif, consulta : string;
begin
       snivel := IntToStr (nivel);
       spadre := IntToStr (padre);
      //CONSULTA EN CATEGORIAS
      ZQNueva.SQL.Clear;
      consulta := 'SELECT `cat_descripcion`, `cat_codigo` FROM `categorias` WHERE `cat_nivel`= '+ #39 +  snivel + #39 +' and `cat_padre`= '+ #39 +  spadre + #39 +';';
      ZQNueva.SQL.Add(consulta);
      ZQNueva.Open;
      if ZQNueva.RecordCount > 0 then
      begin
       pos_descripciones :=0;
       for avanza:=0 to 99 do
           BEGIN
           arr_descripciones[avanza]:='';
           arr_codigos[avanza]:='';
           END;
       while not ZQNueva.Eof do
       begin
        arr_descripciones[pos_descripciones]:= ZQNueva.Fields[0].AsString;
        arr_codigos [pos_descripciones]:= ZQNueva.Fields[1].AsString;
        pos_descripciones := pos_descripciones +1;
        ZQNueva.Next;
       end;
       DestruirBotones;
       for avanza:=0 to pos_descripciones-1 do
         begin
         Contador := Contador+1;
         varCaption:= arr_descripciones[avanza];
         CreaBoton;
         end;
     end
     else
       begin
       nivel := nivel-1;
       showMessage ('Categoria vacia');
       end;
end;
///////FIN DEL PROCEDIMIENTO MOSTRAR PRODUCTOS1  /////////////////////////////
Responder Con Cita
  #4  
Antiguo 11-04-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 21
zvf Va por buen camino
Si tienen tiempo, y lo checan, si ven algo extraño me dicen por favor.
Yo nose que es lo que pase, yo veo que el codigo esta bien, pero esos errores siguen apareciendo .

GRACIAS, DE ANTEMANO, GRACIAS POR SU COOPERACION Y AYUDA .
Responder Con Cita
  #5  
Antiguo 11-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Demasiadas variables, tantas que es imposible seguir el código. No usas parámetros para nada, sino que usas variables globales que despues tienes que adivinar si se ha modificado en algún sitio o no.

Código Delphi [-]
 if ZQNueva.RecordCount > 0 then
      begin
       DestruirBotones;
       contador := 0;
       while not ZQNueva.Eof do
       begin
          inc(contador);
          CreaBoton(contador, 
                    ZQnueva.Fields[0].AsString, 
                    ZQNueva.Fields[1].AsString
                   );
          ZQNueva.Next;
       end;
     end
     else
       begin
       nivel := nivel-1;
       showMessage ('Categoria vacia');
       end;

No necesitas arr_codigos, ni arr_descripciones, amén que solo tiene 99 posiciones; si la consulta da 200 resultados, adios arrays.

Código Delphi [-]
scontador:= IntToStr (contador);
        nombre:= 'Boton';
        Name := nombre+scontador;
Código Delphi [-]
Name := 'Boton'+ inttostr(contador)
Es lo mismo ¿si o si? Pues no, son 2 variables menos

Variables globales.... ninguna.

El código lo puedes guardar en el Label.Tag.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 11-04-2006 a las 16:09:27.
Responder Con Cita
  #6  
Antiguo 11-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Código Delphi [-]
procedure TFPrincipal.mostrar_productos(sender : TObject);
var padre: integer;
begin
//   seleccionado:=(Sender as TLabel).Caption;
// no sé para que se usa "seleccionado"

//no entiendo de donde viene nivel, pero en fins....
   nivel := nivel +1;
   padre := (Sender as Tlabel).tag;
   mostrar_productos1(inttostr(padre),inttostr(nivel));
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 11-04-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 21
zvf Va por buen camino
¿ Ustedes como harian un codigo para hacer esto que necesito y que funcione?

No importa que lo tenga que cambiar, solo quiero que no mande estos errores.

Y lo que necesito que haga es eso, de un tabla de una base de datos que describí arriba, cree los tlabel en tiempo de ejecucion, y al dar click en uno, muestre sus descendientes.

¿ Tienen sugerencias de como hacerlo?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Detener un error de access violation de la DbGrid - delphi..... uper Varios 1 21-09-2005 21:54:42
Error Access Violation en Paquetes (Packages) DarKraZY OOP 4 13-09-2005 14:35:31
Maldito ... Access violation Error (QuickReports) User_baja1 Impresión 1 20-04-2005 10:29:32
Error Access Violation samame Conexión con bases de datos 1 01-04-2004 10:48:10
Error Access Violation con Crystal 9 samame Impresión 0 30-03-2004 14:03:17


La franja horaria es GMT +2. Ahora son las 11:31:28.


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