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 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
  #2  
Antiguo 07-07-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado mRoman, y porque no usar los PNGComponents ?

Estos ya traen un TPngBitBtn...



Saludos cordiales
Responder Con Cita
  #3  
Antiguo 08-07-2021
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
MAXIUM Va camino a la fama
ImageList los soporta. Aunque no sé si se pueden cargar ahí en tiempo de ejecución.
Responder Con Cita
  #4  
Antiguo 08-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje
Estimado mRoman, y porque no usar los PNGComponents ?

Estos ya traen un TPngBitBtn...



Saludos cordiales
Cloayza....gracias por contestar.

Se pueden instalar para Delphi 6?. No los conocía esos componentes.

Gracias por tu tiempo.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #5  
Antiguo 08-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por MAXIUM Ver Mensaje
ImageList los soporta. Aunque no sé si se pueden cargar ahí en tiempo de ejecución.
Si también estoy viendo si con ese componente se puede...y de ahi cargarlos a los botones.

Gracias.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #6  
Antiguo 08-07-2021
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Para cargar una imágen .PNG en un TImageList en tiempo de ejecución, revisa en este enlace: Invalid image size en ImageList

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 08-07-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Si también estoy viendo si con ese componente se puede...y de ahi cargarlos a los botones.

Gracias.
Los PNGComponents, tienen su propio TPngImagelist...

Saludos cordiales
Responder Con Cita
  #8  
Antiguo 08-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Para cargar una imágen .PNG en un TImageList en tiempo de ejecución, revisa en este enlace: Invalid image size en ImageList

Saludos
Que tal ecfisa, gracias por contestar.

Estoy revisando el hilo que me sugeriste...pero creo que tenemos versiones diferentes de Delphi, ya que me esta solicitando un DCU "pngImage.dcu", yo uso Delphi6...
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #9  
Antiguo 08-07-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo los uso desde delphi 5, aquí están.
Responder Con Cita
  #10  
Antiguo 08-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo los uso desde delphi 5, aquí están.
Gracias Casimiro....bajando.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #11  
Antiguo 08-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo los uso desde delphi 5, aquí están.
Se que a estas alturas lo q preguntaré es raro, pero como debo instalarlo??...

File/Open...y cual selecciono....PNG_D6.dpk o PNGComponentsD6.dpk??...

Y luego "Compile" o "Install"?

Seleccioné el segundo (PNGComponentsD6) y me dice que "Themes.dcu" no esta, no lo encuentra

Gracias, pero quiero estar seguro.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #12  
Antiguo 09-07-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Solucionado

Hola de nuevo.

Pues ya lo solucioné....le tuve que dar la vuelta de esta manera, coloque un TImage con su propiedad "visible" a False para que no se mostrara en el formulario, y en tiempo de ejecución cargue las imagenes desde la ruta registrada en la tabla PRODUCTO, aqui el código:

Código Delphi [-]
     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=808 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;
               
               // AQUI LA SOLUCIÓN*****************************************************
                if not(qryCategorias.FieldByName('RUTA_ICONO').IsNull) or 
                      (qryCategorias.FieldByName('RUTA_ICONO').AsString<>'') then
                begin
                    Image1.Picture:=nil;
                    Image1.Picture.LoadFromFile(qryCategorias.FieldByName('RUTA_ICONO').AsString);
                    Glyph:=Image1.Picture.Bitmap;
               end; 
              //***********************************************************************
            end;
            qryCategorias.Next;
            inc(n);
         end;
    end;
end;

No es lo mas elegante y profesional, pero me soluciona el problema, me muestra tanto iconos con formato BMP, PNG...no sé si JPG también -tema para investigar- pero cuando menos los que necesito si los muestra y sin problema.

Saludos a todos y gracias por su colaboración.

p.d. Casimiro, aún asi comentame por fa, como se deben instalar los PNGComponents.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
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
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 21:52:48.


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