Como puedo compilar una classe?

User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

La librería que te falta es xhb.lib de Harbour, pero lo que me sorprende es que estas usando xHarbour, si ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Tienes #include "hbcompat.ch" dentro de source/classes/xbrowse.prg ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Leo
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: Como puedo compilar una classe?

Post by Leo »

Compilo con xHarbour y hbcompat.ch está en las cabeceras de xbrowse.
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Añade esta función a tu PRG principal y debería desaparecer una de esas referencias sin resolver:

function hb_HKeyAt( x, y )

return HGetKeyAt( x, y )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Tambien esta:

function HB_HVALUEAT( x, y, z )

return HGetValueAt( x, y, z )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Leo
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: Como puedo compilar una classe?

Post by Leo »

Antonio, gracias por la respuesta, ha mejorado el tema, ahora son sólo dos funciones que no sé de dónde engancharlas.

Code: Select all

Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
rmail.c:
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_png_set_longjmp_fn' referenced from C:\FWH\LIB\FIVEHC.LIB|FWPNG
Error: Unresolved external '_HB_FUN_HB_HCASEMATCH' referenced from C:\FWH\LIB\FIVEHX.LIB|xbrowse
* Linking errors *
Gracias.
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Añade esta tambien:

function HCASEMATCH( x, y )

return HGetCaseMatch( x, y )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Estas enlazando png.lib de xHarbour ?

me da la sensación de que tienes mezcladas librerias antiguas y nuevas...
regards, saludos

Antonio Linares
www.fivetechsoft.com
Leo
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: Como puedo compilar una classe?

Post by Leo »

He agregado las 3 funciones que me has descrito en el código de xBrowse

Code: Select all

//----------------------------------------------------------------------------//

function hb_HKeyAt( x, y )

return HGetKeyAt( x, y )

//----------------------------------------------------------------------------//

function HB_HVALUEAT( x, y, z )

return HGetValueAt( x, y, z )

//----------------------------------------------------------------------------//

function HCASEMATCH( x, y )

return HGetCaseMatch( x, y )

//----------------------------------------------------------------------------//
 
y aún así, e incluyendo la xhb.lib el resultado es el mismo anterior. Sigue reclamando la función _HB_FUN_HB_HCASEMATCH
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

regards, saludos

Antonio Linares
www.fivetechsoft.com
Leo
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: Como puedo compilar una classe?

Post by Leo »

Gracias Antonio, al final lo logré, un poco duro de cabeza el alumno... Muchas gracias.

Pregunta: Tengo FWH 12.04, y agregué una modificación publicada para cargar png en los btnbmp, sólo me funciona en botones y no en una btnbar ¿Qué me falta?

El código cambiado es el siguiente:

Code: Select all

/*METHOD LoadBitmaps( cResName1, cResName2, cBmpFile1, cBmpFile2,;
                    cResName3, cBmpFile3, cResName4, cBmpFile4 ) CLASS TBtnBmp

   local aBmpPal

   if ! Empty( cResName1 )
      aBmpPal = PalBmpLoad( cResName1 )
      ::hBitmap1  = aBmpPal[ 1 ]
      ::hPalette1 = aBmpPal[ 2 ]
      ::HasAlpha( ::hBitmap1, BTN_UP )
   endif

   if ! Empty( cResName2 )
      aBmpPal = PalBmpLoad( cResName2 )
      ::hBitmap2  = aBmpPal[ 1 ]
      ::hPalette2 = aBmpPal[ 2 ]
      ::HasAlpha( ::hBitmap2, BTN_DOWN )
   endif

   if ! Empty( cResName3 )
      aBmpPal = PalBmpLoad( cResName3 )
      ::hBitmap3  = aBmpPal[ 1 ]
      ::hPalette3 = aBmpPal[ 2 ]
      ::HasAlpha( ::hBitmap3, BTN_DISABLE )
   endif

   if ! Empty( cResName4 )
      aBmpPal = PalBmpLoad( cResName4 )
      ::hBitmap4  = aBmpPal[ 1 ]
      ::hPalette4 = aBmpPal[ 2 ]
      ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
   endif


   if ! Empty( cBmpFile1 )
      if File( cBmpFile1 )
         ::cBmpFile1 = cBmpFile1
         aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile1 )
         ::hBitmap1  = aBmpPal[ 1 ]
         ::hPalette1 = aBmpPal[ 2 ]
         ::HasAlpha( ::hBitmap1, BTN_UP )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile2 )
      if File( cBmpFile2 )
         ::cBmpFile2 = cBmpFile2
         aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile2 )
         ::hBitmap2  = aBmpPal[ 1 ]
         ::hPalette2 = aBmpPal[ 2 ]
         ::HasAlpha( ::hBitmap2, BTN_DOWN )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile3 )
      if File( cBmpFile3 )
         ::cBmpFile3 = cBmpFile3
         aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile3 )
         ::hBitmap3  = aBmpPal[ 1 ]
         ::hPalette3 = aBmpPal[ 2 ]
         ::HasAlpha( ::hBitmap3, BTN_DISABLE )
         ::ReleaseDC()
      endif
   endif

   if ! Empty( cBmpFile4 )
      if File( cBmpFile4 )
         ::cBmpFile4 = cBmpFile4
         aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile4 )
         ::hBitmap4  = aBmpPal[ 1 ]
         ::hPalette4 = aBmpPal[ 2 ]
         ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
         ::ReleaseDC()
      endif
   endif


   if ! Empty( ::hBitmap1 )
      PalBmpNew( ::hWnd, ::hBitmap1, ::hPalette1 )

   endif

   if ! Empty( ::hBitmap2 )
      PalBmpNew( ::hWnd, ::hBitmap2, ::hPalette2 )
   endif

   if ! Empty( ::hBitmap3 )
      PalBmpNew( ::hWnd, ::hBitmap3, ::hPalette3 )
   endif

   if ! Empty( ::hBitmap4 )
      PalBmpNew( ::hWnd, ::hBitmap4, ::hPalette4 )
   endif

return nil*/
METHOD LoadBitmaps( cResName1, cResName2, cBmpFile1, cBmpFile2,;
                    cResName3, cBmpFile3, cResName4, cBmpFile4 ) CLASS TBtnBmp

  local aBmpPal
  *MsgAlert("Estoy en ::LoadBitmaps()")
  if ! Empty( cResName1 )
     IF  FindResource( GetResources(), cResName1 , 10 )  != 0
         ::hBitmap1  =  FILoadFromMemory( cResToStr( cResName1, 10 ), 10 )
         ::hPalette1 = 0
     ELSE
        aBmpPal = PalBmpLoad( cResName1 )
        ::hBitmap1  = aBmpPal[ 1 ]
        ::hPalette1 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap1, BTN_UP )
  endif

  if ! Empty( cResName2 )
   IF  FindResource( GetResources(), cResName2 , 10 )  != 0
         ::hBitmap2  =  FILoadFromMemory( cResToStr( cResName2, 10 ), 10 )
         ::hPalette2 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName2 )
         ::hBitmap2  = aBmpPal[ 1 ]
         ::hPalette2 = aBmpPal[ 2 ]
     endif
      ::HasAlpha( ::hBitmap2, BTN_DOWN )
   endif

   if ! Empty( cResName3 )
     IF  FindResource( GetResources(), cResName3 , 10 )  != 0
         ::hBitmap3  =  FILoadFromMemory( cResToStr( cResName3, 10 ), 10 )
         ::hPalette3 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName3 )
         ::hBitmap3  = aBmpPal[ 1 ]
         ::hPalette3 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap3, BTN_DISABLE )
   endif

   if ! Empty( cResName4 )
     IF  FindResource( GetResources(), cResName4 , 10 )  != 0
         ::hBitmap4  =  FILoadFromMemory( cResToStr( cResName4, 10 ), 10 )
         ::hPalette4 = 0
     ELSE
         aBmpPal = PalBmpLoad( cResName4 )
         ::hBitmap4  = aBmpPal[ 1 ]
         ::hPalette4 = aBmpPal[ 2 ]
     endif
     ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
   endif

   if ! Empty( cBmpFile1 )
      if File( cBmpFile1 )
         ::cBmpFile1 = cBmpFile1
         IF upper(right(cBmpFile1,3))="PNG"
            ::hBitmap1  = FWOpenPngFile( cBmpFile1 )
            ::hPalette1 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile1 )
            ::hBitmap1  = aBmpPal[ 1 ]
            ::hPalette1 = aBmpPal[ 2 ]
                ::ReleaseDC()
         endif
         ::HasAlpha( ::hBitmap1, BTN_UP )
      endif
   endif

   if ! Empty( cBmpFile2 )
      if File( cBmpFile2 )
         ::cBmpFile2 = cBmpFile2
         IF upper(right(cBmpFile2,3))="PNG"
            ::hBitmap2  = FWOpenPngFile( cBmpFile2 )
            ::hPalette2 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile2 )
            ::hBitmap2  = aBmpPal[ 1 ]
            ::hPalette2 = aBmpPal[ 2 ]
                ::ReleaseDC()
         endif
         ::HasAlpha( ::hBitmap2, BTN_DOWN )

      endif
   endif

   if ! Empty( cBmpFile3 )
      if File( cBmpFile3 )
         ::cBmpFile3 = cBmpFile3
         IF upper(right(cBmpFile3,3))="PNG"
            ::hBitmap3  = FWOpenPngFile( cBmpFile3 )
            ::hPalette3 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile3 )
           ::hBitmap3  = aBmpPal[ 1 ]
           ::hPalette3 = aBmpPal[ 2 ]
              ::ReleaseDC()
         endif
         ::HasAlpha( ::hBitmap3, BTN_DISABLE )
      endif
   endif

   if ! Empty( cBmpFile4 )
      if File( cBmpFile4 )
         ::cBmpFile4 = cBmpFile4
         IF upper(right(cBmpFile4,3))="PNG"
            ::hBitmap4  = FWOpenPngFile( cBmpFile4 )
            ::hPalette4 = 0
         else
            aBmpPal     = PalBmpRead( ::GetDC(), cBmpFile4 )
           ::hBitmap4  = aBmpPal[ 1 ]
           ::hPalette4 = aBmpPal[ 2 ]
              ::ReleaseDC()
         endif
         ::HasAlpha( ::hBitmap4, BTN_OVERMOUSE )
      endif
   endif


   if ! Empty( ::hBitmap1 )
      PalBmpNew( ::hWnd, ::hBitmap1, ::hPalette1 )

   endif

   if ! Empty( ::hBitmap2 )
      PalBmpNew( ::hWnd, ::hBitmap2, ::hPalette2 )
   endif

   if ! Empty( ::hBitmap3 )
      PalBmpNew( ::hWnd, ::hBitmap3, ::hPalette3 )
   endif

   if ! Empty( ::hBitmap4 )
      PalBmpNew( ::hWnd, ::hBitmap4, ::hPalette4 )
   endif

return nil
De Antemano, Gracias.
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Como puedo compilar una classe?

Post by Antonio Linares »

Estas cargando los PNGs desde ficheros ó desde recursos ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Leo
Posts: 66
Joined: Thu Jan 03, 2013 6:13 pm

Re: Como puedo compilar una classe?

Post by Leo »

Desde Ficheros
Fivewin 12.04 + xHarbour 1.2.1 + BCC582

Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Post Reply