FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Erro en TTaskPanel
Posts: 17
Joined: Fri Apr 18, 2008 02:41 PM
Erro en TTaskPanel
Posted: Tue Jan 20, 2026 05:25 AM

Hola a todos,

He encontrado un problema con parámetros faltantes en la clase TTaskPanel.

La llamada original no pasa todos los parámetros al método:

METHOD AddLink( cPrompt, bAction, cBitmap, oFnt, nClrT, nClrP, nClrO ) CLASS TTaskPanel

   local nTop := ::nTitleHeight + 10, n, oUrlLink

   if ! Empty( ::aControls )
      for n = 1 to Len( ::aControls )
         nTop += ::aControls[ n ]:nHeight + ::nOffSetY
      next
   endif

   oUrlLink := TUrlLink():New( nTop, 33, Self, .T., .F., if( HB_IsNIL( oFnt ), ::oFont, oFnt ), ;
                               "", cPrompt, , nClrT, nClrP, nClrO )
   if !HB_IsNIL( nClrT )
      oUrlLink:nClrText := nClrT
   endif
   oUrlLink:SetColor( oUrlLink:nClrText, if( HB_IsNIL( nClrP ), ::nClrPane, nClrP ) )
   oUrlLink:nClrOver = if( HB_IsNIL( nClrO ), ::nClrHover, nClrO )

   oUrlLink:bAction = bAction

   if File( cBitmap )
      oUrlLink:hBmp = ReadBitmap( 0, cBitmap )
   else
      oUrlLink:hBmp = LoadBitmap( GetResources(), cBitmap )
   endif

   if oUrlLink:nTop + oUrlLink:nHeight > ::nHeight
      ::nHeight     := oUrlLink:nTop + oUrlLink:nHeight + 10
      ::nBodyHeight := ::nHeight - ::nTitleHeight
      ::UpdateRegion()
   endif

return nil

La forma correcta sería:

METHOD AddLink( cPrompt, bAction, cBitmap, oFnt, nClrT, nClrP, nClrO, cMsg, cTooltip ) CLASS TTaskPanel

   local nTop := ::nTitleHeight + 10, n, oUrlLink

   if ! Empty( ::aControls )
      for n = 1 to Len( ::aControls )
         nTop += ::aControls[ n ]:nHeight + ::nOffSetY
      next
   endif

   oUrlLink := TUrlLink():New( nTop, 33, Self, .T., .F., if( HB_IsNIL( oFnt ), ::oFont, oFnt ), ;
                               cMsg, cPrompt, cToolTip , nClrT, nClrP, nClrO )
   if !HB_IsNIL( nClrT )
      oUrlLink:nClrText := nClrT
   endif
   oUrlLink:SetColor( oUrlLink:nClrText, if( HB_IsNIL( nClrP ), ::nClrPane, nClrP ) )
   oUrlLink:nClrOver = if( HB_IsNIL( nClrO ), ::nClrHover, nClrO )

   oUrlLink:bAction = bAction

   if File( cBitmap )
      oUrlLink:hBmp = ReadBitmap( 0, cBitmap )
   else
      oUrlLink:hBmp = LoadBitmap( GetResources(), cBitmap )
   endif

   if oUrlLink:nTop + oUrlLink:nHeight > ::nHeight
      ::nHeight     := oUrlLink:nTop + oUrlLink:nHeight + 10
      ::nBodyHeight := ::nHeight - ::nTitleHeight
      ::UpdateRegion()
   endif

return nil

Simplemente agregando los campos cMsg y cTooltip, ambos aparecerán automáticamente en la ventana.

Modifiqué la clase, pero sería mejor que se mantuviera en su idioma nativo para no tener que cambiarla constantemente.

Saludos cordiales.

Alexandre Pereira

Harbour 3.2 - FWH - 25.12 - MSVC - VsCODE - Win11

Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 03:12 PM

A mi me gusta mucho la tTaskPanel del colega Andrés Reyes funciona en ventanas MDI
la CLASS fue modificada para que funcione con versiones actuales de FWH/Harbour/xHarbour

Saludos

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 05:37 PM

Estimado César,

El código fuente está disponible ? :)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 05:47 PM
alex2002 wrote:

Hola a todos,

He encontrado un problema con parámetros faltantes en la clase TTaskPanel.

La llamada original no pasa todos los parámetros al método:

METHOD AddLink( cPrompt, bAction, cBitmap, oFnt, nClrT, nClrP, nClrO ) CLASS TTaskPanel

   local nTop := ::nTitleHeight + 10, n, oUrlLink

   if ! Empty( ::aControls )
      for n = 1 to Len( ::aControls )
         nTop += ::aControls[ n ]:nHeight + ::nOffSetY
      next
   endif

   oUrlLink := TUrlLink():New( nTop, 33, Self, .T., .F., if( HB_IsNIL( oFnt ), ::oFont, oFnt ), ;
                               "", cPrompt, , nClrT, nClrP, nClrO )
   if !HB_IsNIL( nClrT )
      oUrlLink:nClrText := nClrT
   endif
   oUrlLink:SetColor( oUrlLink:nClrText, if( HB_IsNIL( nClrP ), ::nClrPane, nClrP ) )
   oUrlLink:nClrOver = if( HB_IsNIL( nClrO ), ::nClrHover, nClrO )

   oUrlLink:bAction = bAction

   if File( cBitmap )
      oUrlLink:hBmp = ReadBitmap( 0, cBitmap )
   else
      oUrlLink:hBmp = LoadBitmap( GetResources(), cBitmap )
   endif

   if oUrlLink:nTop + oUrlLink:nHeight > ::nHeight
      ::nHeight     := oUrlLink:nTop + oUrlLink:nHeight + 10
      ::nBodyHeight := ::nHeight - ::nTitleHeight
      ::UpdateRegion()
   endif

return nil

La forma correcta sería:

METHOD AddLink( cPrompt, bAction, cBitmap, oFnt, nClrT, nClrP, nClrO, cMsg, cTooltip ) CLASS TTaskPanel

   local nTop := ::nTitleHeight + 10, n, oUrlLink

   if ! Empty( ::aControls )
      for n = 1 to Len( ::aControls )
         nTop += ::aControls[ n ]:nHeight + ::nOffSetY
      next
   endif

   oUrlLink := TUrlLink():New( nTop, 33, Self, .T., .F., if( HB_IsNIL( oFnt ), ::oFont, oFnt ), ;
                               cMsg, cPrompt, cToolTip , nClrT, nClrP, nClrO )
   if !HB_IsNIL( nClrT )
      oUrlLink:nClrText := nClrT
   endif
   oUrlLink:SetColor( oUrlLink:nClrText, if( HB_IsNIL( nClrP ), ::nClrPane, nClrP ) )
   oUrlLink:nClrOver = if( HB_IsNIL( nClrO ), ::nClrHover, nClrO )

   oUrlLink:bAction = bAction

   if File( cBitmap )
      oUrlLink:hBmp = ReadBitmap( 0, cBitmap )
   else
      oUrlLink:hBmp = LoadBitmap( GetResources(), cBitmap )
   endif

   if oUrlLink:nTop + oUrlLink:nHeight > ::nHeight
      ::nHeight     := oUrlLink:nTop + oUrlLink:nHeight + 10
      ::nBodyHeight := ::nHeight - ::nTitleHeight
      ::UpdateRegion()
   endif

return nil

Simplemente agregando los campos cMsg y cTooltip, ambos aparecerán automáticamente en la ventana.

Modifiqué la clase, pero sería mejor que se mantuviera en su idioma nativo para no tener que cambiarla constantemente.

Saludos cordiales.

Estimado Alex,

Muchas gracias. Añadido para FWH 26.03

saludos :)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 09:49 PM

Hola Antonio, la tTaskPanel
que yo uso la compartió Joao @Karinha en este foro solo que no encuentro el POST,
de todos modos te envié un whats .
Lo interesante de esta CLASS es que se puede personalizar

#include "fivewin.ch"
#include "taskpanel.ch"

function Principal()
   local cTitle := "TASKPANEL TEST"
   local oWnd

   WITH OBJECT TestPanel()
      :New()
   END OBJECT
return nil

CLASS TestPanel
   data oWnd   as OBJECT
   method new()
   method MakeWin()
   method MakePanel()

ENDCLASS

method new() class TestPanel

   ::MakeWin()

return nil

Method MakeWin() CLASS TestPanel
   local oSelf := Self
   MENU oMenu
      MENUITEM "&Archivo"
      MENU
         menuitem "Selecciona la impresora ...." action( PrinterSetup() )
         MENUITEM "&Salir"  ACTION ( ::oWnd:End() )
      ENDMENU
      oMenu:AddMdi()
   ENDMENU

   define window ::oWnd title "tTaskPanel" FROM 0, 0  TO 750, 1000 PIXEL MENU oMenu

   activate window ::oWnd on init ( oSelf:MakePanel() )


Return nil

Method MakePanel() CLASS TestPanel

   local oTaskPanel

   DEFINE THEME NAME "#CUSTOM"

  ELEMENT TASKPANEL ;
           BACKGROUND {RGB( 251, 213, 229 ), RGB( 235, 154, 192 )  };   //RGB( 251, 213, 229 )
           BORDERCOLOR RGB( 235, 154, 192 );
           PADDING 20; //RELLENO
           BORDERTHICKNESS 1


     ELEMENT SPECIAL GROUP
        ELEMENT HEADER ;
                BACKGROUND {RGB( 237,208, 242 ),RGB( 255, 161, 255 )};
                FOREGROUND RGB( 0, 0, 0 );
                BORDERTHICKNESS 0;
                BUTTON COLLAPSE {"TBN_COLLAPSE1", "TBN_COLLAPSE2" };
                BUTTON EXPAND {"TBN_NOCOLLAPSE1", "TBN_NOCOLLAPSE2"};
                MARGIN TO PANEL 10
        ENDELEMENT

        ELEMENT TASKLIST;                           //SEPARATOR
                BACKGROUND {RGB( 253, 234, 242 ), RGB( 235, 154, 192 ) } ;
                BORDERTHICKNESS 0;
                PADDING 0;
                MARGIN TO TASK 2

           ELEMENT TASK ;                              //BARRA SELECCIONADORA
                   BACKGROUND { RGB( 251, 213, 229 ), RGB(255,0,255), -1 } ;
                   FONTSTYLE { "", "" };
                   FOREGROUND RGB( 0, 0, 0 ); //ITEM LETRAS
                   PADDING { 6, 2, 4, 2 }  //RGB( 251, 213, 229 )
           ENDELEMENT
        ENDELEMENT

     ENDELEMENT


  ENDELEMENT
   ENDTHEME

   DEFINE TASKPANEL oTaskPanel ANCHOR LEFT ;
         THEME "#CUSTOM"

     TASKGROUP "Group 1"  SPECIAL
        TASKITEM "ITEM 1" BITMAP "PRN16" ACTION MSGINFO("ITEM1")
        TASKITEM "ITEM 2" BITMAP "PRN16" ACTION MSGINFO("ITEM2")
     ENDTASKGROUP

     TASKGROUP "Group 2" SPECIAL
        TASKITEM "ITEM 1" BITMAP "PRN16" ACTION MSGINFO("ITEM1")
        TASKITEM "ITEM 2" BITMAP "PRN16" ACTION MSGINFO("ITEM2")
     ENDTASKGROUP

     TASKGROUP  "Detalles" NO COLLAPSABLE SPECIAL
        TASKITEM "<b>test</b>" + ;
                 "<p>===========================</p>"+;
                 "<p>tTaskPanel</p>" +;
                 "<p><b>Autor</b></p>" +;
                 "<p></p>" +;
                 "<p>Cesar</p>"  INFO
     ENDTASKGROUP
   ENDTASKPANEL

Return nil

Saludos !!

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 10:19 PM

Tenemos la autorización de Andrés Reyes para publicarla ? :idea:

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Erro en TTaskPanel
Posted: Thu Jan 22, 2026 10:30 PM
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Erro en TTaskPanel
Posted: Fri Jan 23, 2026 03:50 AM
sysctrl2 wrote:

Si maestro en el 2022,
https://forums.fivetechsupport.com/viewtopic.php?t=42093&hilit=andres+reyes

saludos

Muchas gracias César por el recordatorio :)

https://forums.fivetechsupport.com/viewtopic.php?p=252767#p252767

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Erro en TTaskPanel
Posted: Fri Jan 23, 2026 01:20 PM

Special Thanks to Enrico Maria Giordano.

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=43685&sid=ddfff51faa6

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion