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
  #1  
Antiguo 07-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Iconos PNG sobre BitBtn

Hola amigos.

Trabajando con: FB 2.0, IBX, Delphi6, Win10

Estoy tratando de cargar ICONOS PNG sobre botones BitBtn en tiempo de ejecución -ya he leido que BitBtn solo acepta el formato BMP-. Los iconos los quiero cargar a los botones -creados en tiempo de ejecución- utilizando un campo de la tabla que tiene la RUTA del icono, pero marca error ya que este tipo de botón no acepta los PNG's solo BMP.

Como le hago para que los acepte y muestre el icono en el botón?

Estoy consultando los siguientes hilos:
http://www.clubdelphi.com/~cadetill/...ad.php?t=27568
https://www.clubdelphi.com/foros/showthread.php?t=8020
https://www.clubdelphi.com/foros/sho...ght=png+bitbtn

En espera de encontrar como solucionarlo....

Hasta ahorita lo estoy intentando asi, pero obviamente me salta el error:
Código:
'Bitmap image is not valid'
Aqui el código:
Código Delphi [-]
procedure TfrmRegComanda.FormShow(Sender: TObject);
var
    PosY: Integer;
    nLeft:Integer;
begin

    {***************************************************************

    PROCESO PARA CARGAR EL DETALLE DE LA COMANDA SI nRegID ES
    DIFERENTE DE 0

    ****************************************************************}
    nLin:=1;
    {**************************************************************************
                COMANDA NUEVA
    ***************************************************************************}
    if frmMeseroMain.nRegID=0 then
    begin
        Edit1.Text:=IntToStr(frmAbrirMesas.cbxMesa.KeyValue)+' '+frmAbrirMesas.cbxLetra.Text;
        Edit3.Text:=frmMeseroMain.Label3.Caption;
        Edit2.Text:=frmAbrirMesas.mskNumPersonas.Text;
        Edit4.Text:=IntToStr( frmMeseroMain.nRegID );
        sBtnCerrarCuenta.Enabled:=False;
        sBtnEnviar.Enabled:=True;
        sBtnCambiaMesa.Enabled:=False;
        frmMeseroMain.qryGenerator.Close;
        frmMeseroMain.qryGenerator.Open;
        frmMeseroMain.nRegID:=frmMeseroMain.qryGenerator.FieldByName('ID').AsInteger+1;

        dsCM.Close;
        dsCM.Open;
        dsCM.Append;
        dsCM.FieldByName('COMANDA_NUM_MESA').AsInteger:=frmAbrirMesas.cbxMesa.KeyValue; //nMesa;
        dsCM.FieldByName('COMANDA_MESA_LETRA').AsString:=frmAbrirMesas.cbxLetra.Text; //sLetra;
        dsCM.FieldByName('COMANDA_ESTATUS').AsString:='A';
        dsCM.FieldByName('COMANDA_EMP_ID').AsString:=frmMeseroMain.vNumEmpl;
        dsCM.FieldByName('COMANDA_N_PERSONAS').AsString:=frmAbrirMesas.mskNumPersonas.Text;
        dsCM.Post;
//        dsCM.ApplyUpdates;
    end Else
    begin
{******************************************************************************
                SI YA EXISTE LA COMANDA
******************************************************************************}
        dsCM.Close;
        dsCM.ParamByName('COMANDA_ID').AsInteger:=frmMeseroMain.nRegID;
        dsCM.Open;
        dsCM.Edit;
        if dsCM.FieldByName('COMANDA_ESTATUS').AsString='A' then
        begin
            sBtnCerrarCuenta.Enabled:=True;
            sBtnEnviar.Enabled:=True;
            sBtnCambiaMesa.Enabled:=True;
        end else
        begin
            sBtnCerrarCuenta.Enabled:=False;
            sBtnEnviar.Enabled:=False;
            sBtnCambiaMesa.Enabled:=False;
        end;
        dsCD.Close;
        dsCD.ParamByName('COMANDA_ID').AsInteger:=dsCM.FieldByName('COMANDA_ID').AsInteger;
        dsCD.Open;
        dsCD.First;
        Edit1.Text:=dsCM.FieldByName('COMANDA_NUM_MESA').AsString+' '+dsCM.FieldByName('COMANDA_MESA_LETRA').AsString;
        Edit3.Text:=frmMeseroMain.Label3.Caption;
        Edit2.Text:=dsCM.FieldByName('COMANDA_N_PERSONAS').AsString;
        Edit4.Text:=IntToStr( frmMeseroMain.nRegID );
        While not(dsCD.Eof)do
        begin
           qryProducto.Close;
           qryProducto.ParamByName('PROD_ID').AsInteger:=dsCD.FieldByName('PRODUCTO_ID').AsInteger;
           qryProducto.Open;
           SG.RowCount:=SG.RowCount+1;
           SG.RowHeights[nLin] := 80;
           SG.Cells[0,nLin]:=IntToStr( nLin );
           SG.Cells[1,nLin]:=dsCD.FieldByName('PRODUCTO_ID').AsString;
           SG.Cells[2,nLin]:=TRIMLEFT(dsCD.FieldByName('COMANDA_DESCR_PROD_MODIF').AsString);
           SG.Cells[3,nLin]:=IntToStr(1);
           SG.Cells[4,nLin]:=FormatFloat('$##,##0.00',qryProducto.FieldByName('PRECIO').AsFloat) ;
           SG.Cells[6,nLin]:=dsCD.FieldByName('COMANDA_STAT_COCINA').AsString;
           Importe:=qryProducto.FieldByName('PRECIO').AsCurrency*dsCD.FieldByName('COMANDA_D_CANT').AsFloat;
           SG.Cells[5,nLin]:=FormatFloat('$##,##0.00', Importe);
           TotPagar:=TotPagar+Importe;
           mskImporte.Text:=FormatFloat('$##,##0.00',TotPagar);
           nLin:=nLin+1;
           dsCD.Next;
        end;
    end;


    // **** Con el siguiente codigo eliminamos los botones que puedan estar dentro del SCROLLBOX1 *****
    while ScrollBox1.ControlCount > 0 do
        ScrollBox1.Controls[0].Free;

//************* CREA LOS BOTONES DE LAS CATEGORIAS *****************
     PosY:=8;
     nLeft:=8;
     n:=1;
     qryCategorias.Close;
     qryCategorias.Open;
     qryCategorias.First;
     if not(qryCategorias.IsEmpty) then
     begin
         While not qryCategorias.Eof do
         begin
            BtnsCategorias[n]:=TBitBtn.Create(Self);
            with BtnsCategorias[n] do
            begin
                Caption:=copy( UPPERCASE( qryCategorias.fieldbyname('DESCRIPCION').AsString ),1,9)+#13+
                         copy( UPPERCASE( qryCategorias.fieldbyname('DESCRIPCION').AsString ),10,20);
                Parent:=ScrollBox1;
                Height:=100;
                Top:=PosY;
                Left:=nLeft;
                if nLeft=408 then begin //200
                   nLeft:=8;
                   PosY:=PosY+Height+5
                end Else Begin
                   nLeft:=nLeft+100;
                end;
                Width:=100;
                OnClick:=OnButtonClick1;
                Font.Size:=10;
                Tag:=qryCategorias.FieldByName('CATEGORIA_ID').AsInteger;
                Font.Style:=[fsBold];
                Layout:=blGlyphTop;
                Glyph.LoadFromFile(qryCategorias.FieldByName('RUTA_ICONO').AsString );
            end;
            qryCategorias.Next;
            inc(n);
         end;
    end;
    Click_en_BTNCatego:=0;
//    TotPagar:=0;
end;

Como hacer para que acepte iconos PNG Y BMP....solo esos 2 tipos.

Muchas gracias amigos por su tiempo.

P.D. Estoy revisando los links de hasta abajo....
__________________
Miguel Román

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

Última edición por mRoman fecha: 07-07-2021 a las 22:14:26.
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
Mostrar mensaje cuando paso Mouse sobre BitBtn Jorge Orozco Varios 3 19-02-2014 20:02:45
Imagenes de bitbtn franfl C++ Builder 5 11-08-2008 09:20:51
Saber si un BitBtn se ejecuto mrnovice OOP 6 27-06-2008 21:50:34
BitBtn dmagui OOP 1 14-06-2005 23:18:20
Sobre Iconos de utilización libre apicito Varios 5 03-05-2004 16:50:28


La franja horaria es GMT +2. Ahora son las 01:00:27.


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