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

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 23-04-2017
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Poder: 21
mRoman Va por buen camino
Disculpen por tardar en contestar...el cliente me ha estado pidiendo cosas y no habia podido contestar.

La propuesta que mi hizo escafandra, me parecio buena solo que el cliente me cambio las cosas ahora, solo quiere mostrar las mesas q están ocupadas, cosa que me resulto más fácil puesto q ya tenia algo elaborado.

Pero ahora me esta marcando un error de "Abstract error", al momento de querer "borrar" el objecto Button de un ScrollBox. Les explico:

Al momento de Pintar el form "Comandero" en OnPaint, mandó ejecutar el siguiente codigo, para crear los botones, siempre y cuando existieran comandas sin haberse impreso..aqui el codigo:
Código Delphi [-]
procedure TfrmMesasAbiertas.FormPaint(Sender: TObject);
begin
     while ScrollBox1.ControlCount>0 do
         ScrollBox1.Controls[0].Free;

    if ScrollBox1.ControlCount=0 then
    begin
       qryMesa.Close;
       qryMesa.Open;
       if not(qryMesa.IsEmpty) then
       begin
           FormShow(Sender);
           qryMesa.First;
           While not(qryMesa.Eof) do
           begin
                nFolio:=qryMesa.fieldByName('folio_ticket_comanda').AsString;
                nAliasEmpleado:=qryMesa.fieldByName('alias_empleado').AsString;
                nIDMesa:=qryMesa.fieldByName('mesa_num').AsString+qryMesa.FieldByName('literal').AsString;
                CrearBoton2();
                qryMesa.Next;
           end;
       end;
    end;
end;

Cuando el form se pinta, se ejecuta el codigo anterior, creando los botones en cada iteracion con "CrearBoton2()", ahora el boton representa a la mesa y al dar click muestra el detalle en otro form:
Código Delphi [-]
      
procedure TfrmMesasAbiertas.BitBtn1Click(Sender: TObject);
begin
//      bCaption:=TBitBtn(Sender).Hint;
//      IdRegistro:=TBitBtn(Sender).Tag;
      BD.n_IDRegistro:=TBitBtn(Sender).Tag;
      BD.n_Bandera:=1;
      frmAbreMesa.AbreTransaccion();
      if FindComponent('frmDetalleComanda') = nil then
           frmDetalleComanda:=TfrmDetalleComanda.Create(self);
      frmDetalleComanda.ShowModal;
end;

Procedimiento que crea los botones "CrearBoton2()":
Código Delphi [-]
procedure TfrmMesasAbiertas.CrearBoton2();
begin
     n:=n+1;
     Botones[n]:=TBitBtn.Create(Self);
     with Botones[n] do
     begin
         Caption:=nIDMesa+'-'+nAliasEmpleado;
         Hint:=nIDMesa;
         Parent:=ScrollBox1;
         Height:=vHeight;
         PosY:=PosY+Height+10;
         if n>1 then
            vLeft:=vLeft+126;
         if vLeft=1270 then
         begin
             vTop:=vTop+87;
             vLeft:=10;
         end;
         Top:=vTop;
         Left:=vLeft;
         Width:=vWidth;
         OnClick:=BitBtn1Click;
         Name:='btn'+IntToStr(n);
         Font.Size:=13;
         Tag:=qryMesa.fieldByName('registro_id').AsInteger;
         IdRegistro:=qryMesa.fieldByName('registro_id').AsInteger;
         Glyph:=BitBtn1.Glyph;
         Layout:=blGlyphTop;
     end;
end;


Y desde el frmDetalleComanda, envio a imprsion en ticket:

Código Delphi [-]
    
procedure TfrmDetalleComanda.sBtnImprimirClick(Sender: TObject);
begin
    qrTicket.qryCantLetra.Close;
    qrTicket.qryCantLetra.ParamByName('id').AsInteger:=qryMaestro.fieldByName('registro_id').AsInteger;
    qrTicket.qryCantLetra.Open;

    qrTicket.qryTicket.Close;
    qrTicket.qryTicket.ParamByName('registro_id').AsInteger:=qryMaestro.fieldByName('registro_id').AsInt  eger;
    qrTicket.qryTicket.Open;
    qrTicket.QuickRep1.Print;
    frmMesasAbiertas.Comandero(Sender); //Al llegar aqui manda el error "Abstract error" !!
    Close;
end;

En codigo anterior, despues de imprimir el ticket, mando llamar al procedimiento "Comandero" que esta en el form MesasAbiertas, que es el código que puse arriba...y a la hora de ejecutarlo me genere el Error "Abstract error". Checando el código, en ningun lado elimino los elementos creados en un Array que tengo del tipo TBitBtn....talvez sea por esto que me marca el error ????.....

Con este codigo elimino los objectos TBitBtn creados dentro del ScollBox, pero no del array.....
Código Delphi [-]
     while ScrollBox1.ControlCount>0 do
         ScrollBox1.Controls[0].Free;

No andara por aqui el problema....y si es asi...como elimino todo lo q contiene el array, para volver crearlos dentro del array...???

Gracias por sus comentarios y su valioso tiempo....saludos !!!
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 23-04-2017 a las 06:24:29.
Responder Con Cita
 



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
Crear Form en tiempo de ejecución mjjj OOP 2 19-01-2012 19:11:54
Crear Form en tiempo de Ejecución harvicoco Varios 3 28-06-2006 14:55:05
Crear Componentes en tiempo de ejecucion fartycl Varios 3 21-06-2006 22:03:13
Crear un DSN en tiempo de ejecucion neyvan Conexión con bases de datos 7 21-05-2004 17:41:45


La franja horaria es GMT +2. Ahora son las 13:01:08.


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